aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit/src
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit/src')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java25
1 files changed, 18 insertions, 7 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java
index 1dbdc98cea..4ce422ca92 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java
@@ -166,6 +166,8 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable {
final ObjectReader reader;
+ private final boolean closeReader;
+
final MutableObjectId idBuffer;
ObjectIdOwnerMap<RevObject> objects;
@@ -175,6 +177,7 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable {
private int delayFreeFlags;
private int retainOnReset;
+
int carryFlags = UNINTERESTING;
final ArrayList<RevCommit> roots;
@@ -200,22 +203,27 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable {
*
* @param repo
* the repository the walker will obtain data from. An
- * ObjectReader will be created by the walker, and must be
- * released by the caller.
+ * ObjectReader will be created by the walker, and will be closed
+ * when the walker is closed.
*/
public RevWalk(final Repository repo) {
- this(repo.newObjectReader());
+ this(repo.newObjectReader(), true);
}
/**
* Create a new revision walker for a given repository.
+ * <p>
*
* @param or
- * the reader the walker will obtain data from. The reader should
- * be released by the caller when the walker is no longer
- * required.
+ * the reader the walker will obtain data from. The reader is not
+ * closed when the walker is closed (but is closed by {@link
+ * #dispose()}.
*/
public RevWalk(ObjectReader or) {
+ this(or, false);
+ }
+
+ private RevWalk(ObjectReader or, boolean closeReader) {
reader = or;
idBuffer = new MutableObjectId();
objects = new ObjectIdOwnerMap<RevObject>();
@@ -226,6 +234,7 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable {
filter = RevFilter.ALL;
treeFilter = TreeFilter.ALL;
retainBody = true;
+ this.closeReader = closeReader;
}
/** @return the reader this walker is using to load objects. */
@@ -254,7 +263,9 @@ public class RevWalk implements Iterable<RevCommit>, AutoCloseable {
*/
@Override
public void close() {
- reader.close();
+ if (closeReader) {
+ reader.close();
+ }
}
/**