From: David Pursehouse Date: Fri, 27 Jan 2017 05:44:14 +0000 (+0900) Subject: RepoCommand#readFile: Don't call Git#getRepository() in try-with-resource X-Git-Tag: v4.7.0.201704051617-r~100 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fchanges%2F66%2F89666%2F2;p=jgit.git RepoCommand#readFile: Don't call Git#getRepository() in try-with-resource Using try-with-resource means that close() will automatically be called on the Repository object. However, according to the javadoc of Git#close(): If the repository was opened by a static factory method in this class, then this method calls Repository#close() on the underlying repository instance. This means that Repository#close() is called twice, by Git.close() and in the outer try-with-resource, leading to a corrupt use count. Change-Id: I37ba517eb2cc67d1cd36813598772c70208d0bc9 Signed-off-by: David Pursehouse --- diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java index 86dbabca0b..d18cd97489 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java @@ -181,9 +181,8 @@ public class RepoCommand extends GitCommand { throws GitAPIException, IOException { File dir = FileUtils.createTempDir("jgit_", ".git", null); //$NON-NLS-1$ //$NON-NLS-2$ try (Git git = Git.cloneRepository().setBare(true).setDirectory(dir) - .setURI(uri).call(); - Repository repo = git.getRepository()) { - return readFileFromRepo(repo, ref, path); + .setURI(uri).call()) { + return readFileFromRepo(git.getRepository(), ref, path); } finally { FileUtils.delete(dir, FileUtils.RECURSIVE); }