summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Loskutov <loskutov@gmx.de>2015-08-02 23:46:09 +0200
committerAndrey Loskutov <loskutov@gmx.de>2015-08-02 23:46:09 +0200
commit130952656432ec9c5d7f56fc84049ff95bfaed56 (patch)
tree61b2f9daf3157af9aa5b99f49b747e3eb856bbfe
parent204da3969e51d0e36b59924d697787ae9578332e (diff)
downloadjgit-130952656432ec9c5d7f56fc84049ff95bfaed56.tar.gz
jgit-130952656432ec9c5d7f56fc84049ff95bfaed56.zip
Clone should close repository after errors in fetch or checkout
Bug: 474093 Change-Id: Ia0a1478260b94a71a947aa8c04ee0c836d390aec Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java9
1 files changed, 8 insertions, 1 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java
index 9de2803c0b..4aaee8d96d 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java
@@ -127,16 +127,23 @@ public class CloneCommand extends TransportCommand<CloneCommand, Git> {
*/
public Git call() throws GitAPIException, InvalidRemoteException,
org.eclipse.jgit.api.errors.TransportException {
+ Repository repository = null;
try {
URIish u = new URIish(uri);
- Repository repository = init(u);
+ repository = init(u);
FetchResult result = fetch(repository, u);
if (!noCheckout)
checkout(repository, result);
return new Git(repository);
} catch (IOException ioe) {
+ if (repository != null) {
+ repository.close();
+ }
throw new JGitInternalException(ioe.getMessage(), ioe);
} catch (URISyntaxException e) {
+ if (repository != null) {
+ repository.close();
+ }
throw new InvalidRemoteException(MessageFormat.format(
JGitText.get().invalidRemote, remote));
}