Browse Source

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 <david.pursehouse@gmail.com>
stable-4.7
David Pursehouse 8 years ago committed by Matthias Sohn
parent
commit
acc94c475a
  1. 5
      org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java

5
org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java

@ -181,9 +181,8 @@ public class RepoCommand extends GitCommand<RevCommit> {
throws GitAPIException, IOException { throws GitAPIException, IOException {
File dir = FileUtils.createTempDir("jgit_", ".git", null); //$NON-NLS-1$ //$NON-NLS-2$ File dir = FileUtils.createTempDir("jgit_", ".git", null); //$NON-NLS-1$ //$NON-NLS-2$
try (Git git = Git.cloneRepository().setBare(true).setDirectory(dir) try (Git git = Git.cloneRepository().setBare(true).setDirectory(dir)
.setURI(uri).call(); .setURI(uri).call()) {
Repository repo = git.getRepository()) { return readFileFromRepo(git.getRepository(), ref, path);
return readFileFromRepo(repo, ref, path);
} finally { } finally {
FileUtils.delete(dir, FileUtils.RECURSIVE); FileUtils.delete(dir, FileUtils.RECURSIVE);
} }

Loading…
Cancel
Save