Merge "Fix file handle leak in FetchCommand#fetchSubmodules"
This commit is contained in:
commit
992980d856
|
@ -171,38 +171,42 @@ private void fetchSubmodules(FetchResult results)
|
||||||
}
|
}
|
||||||
walk.setTree(revWalk.parseTree(fetchHead));
|
walk.setTree(revWalk.parseTree(fetchHead));
|
||||||
while (walk.next()) {
|
while (walk.next()) {
|
||||||
Repository submoduleRepo = walk.getRepository();
|
try (Repository submoduleRepo = walk.getRepository()) {
|
||||||
|
|
||||||
// Skip submodules that don't exist locally (have not been
|
// Skip submodules that don't exist locally (have not been
|
||||||
// cloned), are not registered in the .gitmodules file, or
|
// cloned), are not registered in the .gitmodules file, or
|
||||||
// not registered in the parent repository's config.
|
// not registered in the parent repository's config.
|
||||||
if (submoduleRepo == null || walk.getModulesPath() == null
|
if (submoduleRepo == null || walk.getModulesPath() == null
|
||||||
|| walk.getConfigUrl() == null) {
|
|| walk.getConfigUrl() == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
FetchRecurseSubmodulesMode recurseMode = getRecurseMode(
|
FetchRecurseSubmodulesMode recurseMode = getRecurseMode(
|
||||||
walk.getPath());
|
walk.getPath());
|
||||||
|
|
||||||
// When the fetch mode is "yes" we always fetch. When the mode
|
// When the fetch mode is "yes" we always fetch. When the
|
||||||
// is "on demand", we only fetch if the submodule's revision was
|
// mode
|
||||||
// updated to an object that is not currently present in the
|
// is "on demand", we only fetch if the submodule's revision
|
||||||
// submodule.
|
// was
|
||||||
if ((recurseMode == FetchRecurseSubmodulesMode.ON_DEMAND
|
// updated to an object that is not currently present in the
|
||||||
&& !submoduleRepo.hasObject(walk.getObjectId()))
|
// submodule.
|
||||||
|| recurseMode == FetchRecurseSubmodulesMode.YES) {
|
if ((recurseMode == FetchRecurseSubmodulesMode.ON_DEMAND
|
||||||
FetchCommand f = new FetchCommand(submoduleRepo)
|
&& !submoduleRepo.hasObject(walk.getObjectId()))
|
||||||
.setProgressMonitor(monitor).setTagOpt(tagOption)
|
|| recurseMode == FetchRecurseSubmodulesMode.YES) {
|
||||||
.setCheckFetchedObjects(checkFetchedObjects)
|
FetchCommand f = new FetchCommand(submoduleRepo)
|
||||||
.setRemoveDeletedRefs(isRemoveDeletedRefs())
|
.setProgressMonitor(monitor)
|
||||||
.setThin(thin).setRefSpecs(refSpecs)
|
.setTagOpt(tagOption)
|
||||||
.setDryRun(dryRun)
|
.setCheckFetchedObjects(checkFetchedObjects)
|
||||||
.setRecurseSubmodules(recurseMode);
|
.setRemoveDeletedRefs(isRemoveDeletedRefs())
|
||||||
configure(f);
|
.setThin(thin).setRefSpecs(refSpecs)
|
||||||
if (callback != null) {
|
.setDryRun(dryRun)
|
||||||
callback.fetchingSubmodule(walk.getPath());
|
.setRecurseSubmodules(recurseMode);
|
||||||
|
configure(f);
|
||||||
|
if (callback != null) {
|
||||||
|
callback.fetchingSubmodule(walk.getPath());
|
||||||
|
}
|
||||||
|
results.addSubmodule(walk.getPath(), f.call());
|
||||||
}
|
}
|
||||||
results.addSubmodule(walk.getPath(), f.call());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
Loading…
Reference in New Issue