Browse Source

Use try-with-resource to close resources in CheckoutCommand

Change-Id: Ia4d4f9bff03a03d116b80022d7691df67bf8b51b
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
stable-4.1
Matthias Sohn 10 years ago
parent
commit
7343c7a10f
  1. 54
      org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java

54
org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java

@ -208,16 +208,17 @@ public class CheckoutCommand extends GitCommand<Ref> {
} }
if (createBranch) { if (createBranch) {
Git git = new Git(repo); try (Git git = new Git(repo)) {
CreateBranchCommand command = git.branchCreate(); CreateBranchCommand command = git.branchCreate();
command.setName(name); command.setName(name);
if (startCommit != null) if (startCommit != null)
command.setStartPoint(startCommit); command.setStartPoint(startCommit);
else else
command.setStartPoint(startPoint); command.setStartPoint(startPoint);
if (upstreamMode != null) if (upstreamMode != null)
command.setUpstreamMode(upstreamMode); command.setUpstreamMode(upstreamMode);
command.call(); command.call();
}
} }
Ref headRef = repo.getRef(Constants.HEAD); Ref headRef = repo.getRef(Constants.HEAD);
@ -243,11 +244,14 @@ public class CheckoutCommand extends GitCommand<Ref> {
JGitText.get().refNotResolved, name)); JGitText.get().refNotResolved, name));
} }
RevWalk revWalk = new RevWalk(repo); RevCommit headCommit = null;
AnyObjectId headId = headRef.getObjectId(); RevCommit newCommit = null;
RevCommit headCommit = headId == null ? null : revWalk try (RevWalk revWalk = new RevWalk(repo)) {
.parseCommit(headId); AnyObjectId headId = headRef.getObjectId();
RevCommit newCommit = revWalk.parseCommit(branch); headCommit = headId == null ? null
: revWalk.parseCommit(headId);
newCommit = revWalk.parseCommit(branch);
}
RevTree headTree = headCommit == null ? null : headCommit.getTree(); RevTree headTree = headCommit == null ? null : headCommit.getTree();
DirCacheCheckout dco; DirCacheCheckout dco;
DirCache dc = repo.lockDirCache(); DirCache dc = repo.lockDirCache();
@ -376,26 +380,20 @@ public class CheckoutCommand extends GitCommand<Ref> {
*/ */
protected CheckoutCommand checkoutPaths() throws IOException, protected CheckoutCommand checkoutPaths() throws IOException,
RefNotFoundException { RefNotFoundException {
RevWalk revWalk = new RevWalk(repo);
DirCache dc = repo.lockDirCache(); DirCache dc = repo.lockDirCache();
try { try (RevWalk revWalk = new RevWalk(repo);
TreeWalk treeWalk = new TreeWalk(revWalk.getObjectReader()); TreeWalk treeWalk = new TreeWalk(revWalk.getObjectReader())) {
treeWalk.setRecursive(true); treeWalk.setRecursive(true);
if (!checkoutAllPaths) if (!checkoutAllPaths)
treeWalk.setFilter(PathFilterGroup.createFromStrings(paths)); treeWalk.setFilter(PathFilterGroup.createFromStrings(paths));
try { if (isCheckoutIndex())
if (isCheckoutIndex()) checkoutPathsFromIndex(treeWalk, dc);
checkoutPathsFromIndex(treeWalk, dc); else {
else { RevCommit commit = revWalk.parseCommit(getStartPointObjectId());
RevCommit commit = revWalk.parseCommit(getStartPointObjectId()); checkoutPathsFromCommit(treeWalk, dc, commit);
checkoutPathsFromCommit(treeWalk, dc, commit);
}
} finally {
treeWalk.release();
} }
} finally { } finally {
dc.unlock(); dc.unlock();
revWalk.release();
} }
return this; return this;
} }

Loading…
Cancel
Save