@ -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 ( ) ;
}
}
/ * *