summaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit
diff options
context:
space:
mode:
authorMatthias Sohn <matthias.sohn@sap.com>2014-12-12 08:50:20 -0500
committerGerrit Code Review @ Eclipse.org <gerrit@eclipse.org>2014-12-12 08:50:20 -0500
commitca7c928eae842b8e9881e42ffe7e5fee81983e13 (patch)
tree87e15967e95f1435785903d8377345c1935f4751 /org.eclipse.jgit
parentc893534059d72fa4c0dbf7b85012b019666ff3c5 (diff)
parentda595f093e5547a7da583fa0459400e47a2638c6 (diff)
downloadjgit-ca7c928eae842b8e9881e42ffe7e5fee81983e13.tar.gz
jgit-ca7c928eae842b8e9881e42ffe7e5fee81983e13.zip
Merge "Fix tests on windows by closing repos" into stable-3.6
Diffstat (limited to 'org.eclipse.jgit')
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java47
1 files changed, 27 insertions, 20 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java
index d62b1f58a0..1b049f6155 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/IndexDiff.java
@@ -533,28 +533,35 @@ public class IndexDiff {
}
Repository subRepo = smw.getRepository();
if (subRepo != null) {
- ObjectId subHead = subRepo.resolve("HEAD"); //$NON-NLS-1$
- if (subHead != null && !subHead.equals(smw.getObjectId()))
- modified.add(smw.getPath());
- else if (ignoreSubmoduleMode != IgnoreSubmoduleMode.DIRTY) {
- IndexDiff smid = submoduleIndexDiffs.get(smw.getPath());
- if (smid == null) {
- smid = new IndexDiff(subRepo, smw.getObjectId(),
- wTreeIt.getWorkingTreeIterator(subRepo));
- submoduleIndexDiffs.put(smw.getPath(), smid);
- }
- if (smid.diff()) {
- if (ignoreSubmoduleMode == IgnoreSubmoduleMode.UNTRACKED
- && smid.getAdded().isEmpty()
- && smid.getChanged().isEmpty()
- && smid.getConflicting().isEmpty()
- && smid.getMissing().isEmpty()
- && smid.getModified().isEmpty()
- && smid.getRemoved().isEmpty()) {
- continue;
- }
+ try {
+ ObjectId subHead = subRepo.resolve("HEAD"); //$NON-NLS-1$
+ if (subHead != null
+ && !subHead.equals(smw.getObjectId()))
modified.add(smw.getPath());
+ else if (ignoreSubmoduleMode != IgnoreSubmoduleMode.DIRTY) {
+ IndexDiff smid = submoduleIndexDiffs.get(smw
+ .getPath());
+ if (smid == null) {
+ smid = new IndexDiff(subRepo,
+ smw.getObjectId(),
+ wTreeIt.getWorkingTreeIterator(subRepo));
+ submoduleIndexDiffs.put(smw.getPath(), smid);
+ }
+ if (smid.diff()) {
+ if (ignoreSubmoduleMode == IgnoreSubmoduleMode.UNTRACKED
+ && smid.getAdded().isEmpty()
+ && smid.getChanged().isEmpty()
+ && smid.getConflicting().isEmpty()
+ && smid.getMissing().isEmpty()
+ && smid.getModified().isEmpty()
+ && smid.getRemoved().isEmpty()) {
+ continue;
+ }
+ modified.add(smw.getPath());
+ }
}
+ } finally {
+ subRepo.close();
}
}
}