diff options
Diffstat (limited to 'org.eclipse.jgit/src')
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java | 25 |
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(); + } } /** |