Add a release() method to SubmoduleWalk
We need a way to release the underlying TreeWalk. Also, use this method to release walks from the static factory methods on error or when submodules are not found. Change-Id: I6bedc2db78bcd577aef2cfe6715bb981a26dcfd7
This commit is contained in:
parent
2656ac1b5a
commit
458f64c6ea
|
@ -102,12 +102,18 @@ public static SubmoduleWalk forIndex(Repository repository)
|
||||||
public static SubmoduleWalk forPath(Repository repository,
|
public static SubmoduleWalk forPath(Repository repository,
|
||||||
AnyObjectId treeId, String path) throws IOException {
|
AnyObjectId treeId, String path) throws IOException {
|
||||||
SubmoduleWalk generator = new SubmoduleWalk(repository);
|
SubmoduleWalk generator = new SubmoduleWalk(repository);
|
||||||
|
try {
|
||||||
generator.setTree(treeId);
|
generator.setTree(treeId);
|
||||||
PathFilter filter = PathFilter.create(path);
|
PathFilter filter = PathFilter.create(path);
|
||||||
generator.setFilter(filter);
|
generator.setFilter(filter);
|
||||||
while (generator.next())
|
while (generator.next())
|
||||||
if (filter.isDone(generator.walk))
|
if (filter.isDone(generator.walk))
|
||||||
return generator;
|
return generator;
|
||||||
|
} catch (IOException e) {
|
||||||
|
generator.release();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
generator.release();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,12 +130,18 @@ public static SubmoduleWalk forPath(Repository repository,
|
||||||
public static SubmoduleWalk forPath(Repository repository,
|
public static SubmoduleWalk forPath(Repository repository,
|
||||||
AbstractTreeIterator iterator, String path) throws IOException {
|
AbstractTreeIterator iterator, String path) throws IOException {
|
||||||
SubmoduleWalk generator = new SubmoduleWalk(repository);
|
SubmoduleWalk generator = new SubmoduleWalk(repository);
|
||||||
|
try {
|
||||||
generator.setTree(iterator);
|
generator.setTree(iterator);
|
||||||
PathFilter filter = PathFilter.create(path);
|
PathFilter filter = PathFilter.create(path);
|
||||||
generator.setFilter(filter);
|
generator.setFilter(filter);
|
||||||
while (generator.next())
|
while (generator.next())
|
||||||
if (filter.isDone(generator.walk))
|
if (filter.isDone(generator.walk))
|
||||||
return generator;
|
return generator;
|
||||||
|
} catch (IOException e) {
|
||||||
|
generator.release();
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
generator.release();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -511,4 +523,9 @@ public String getRemoteUrl() throws IOException, ConfigInvalidException {
|
||||||
String url = getModulesUrl();
|
String url = getModulesUrl();
|
||||||
return url != null ? getSubmoduleRemoteUrl(repository, url) : null;
|
return url != null ? getSubmoduleRemoteUrl(repository, url) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Release any resources used by this walker's reader. */
|
||||||
|
public void release() {
|
||||||
|
walk.release();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue