Browse Source

pgm: Create instances of Git in try-with-resource

To prevent potential resource leak.

Change-Id: I8ac4ae61193324849bafb46501a55f93c5029a4e
Signed-off-by: David Pursehouse <david.pursehouse@sonymobile.com>
stable-4.1
David Pursehouse 9 years ago
parent
commit
3096ab6502
  1. 12
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Add.java
  2. 4
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Archive.java
  3. 40
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Branch.java
  4. 78
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java
  5. 62
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Commit.java
  6. 29
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Describe.java
  7. 51
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Fetch.java
  8. 29
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java
  9. 37
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Push.java
  10. 16
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reflog.java
  11. 28
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reset.java
  12. 11
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Rm.java
  13. 14
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java
  14. 39
      org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java

12
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Add.java

@ -62,10 +62,12 @@ class Add extends TextBuiltin {
@Override @Override
protected void run() throws Exception { protected void run() throws Exception {
AddCommand addCmd = new Git(db).add(); try (Git git = new Git(db)) {
addCmd.setUpdate(update); AddCommand addCmd = git.add();
for (String p : filepatterns) addCmd.setUpdate(update);
addCmd.addFilepattern(p); for (String p : filepatterns)
addCmd.call(); addCmd.addFilepattern(p);
addCmd.call();
}
} }
} }

4
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Archive.java

@ -87,8 +87,8 @@ class Archive extends TextBuiltin {
else else
stream = outs; stream = outs;
try { try (Git git = new Git(db)) {
ArchiveCommand cmd = new Git(db).archive() ArchiveCommand cmd = git.archive()
.setTree(tree) .setTree(tree)
.setFormat(format) .setFormat(format)
.setPrefix(prefix) .setPrefix(prefix)

40
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Branch.java

@ -186,29 +186,31 @@ class Branch extends TextBuiltin {
// This can happen if HEAD is stillborn // This can happen if HEAD is stillborn
if (head != null) { if (head != null) {
String current = head.getLeaf().getName(); String current = head.getLeaf().getName();
ListBranchCommand command = new Git(db).branchList(); try (Git git = new Git(db)) {
if (all) ListBranchCommand command = git.branchList();
command.setListMode(ListMode.ALL); if (all)
else if (remote) command.setListMode(ListMode.ALL);
command.setListMode(ListMode.REMOTE); else if (remote)
command.setListMode(ListMode.REMOTE);
if (containsCommitish != null) if (containsCommitish != null)
command.setContains(containsCommitish); command.setContains(containsCommitish);
List<Ref> refs = command.call(); List<Ref> refs = command.call();
for (Ref ref : refs) { for (Ref ref : refs) {
if (ref.getName().equals(Constants.HEAD)) if (ref.getName().equals(Constants.HEAD))
addRef("(no branch)", head); //$NON-NLS-1$ addRef("(no branch)", head); //$NON-NLS-1$
} }
addRefs(refs, Constants.R_HEADS); addRefs(refs, Constants.R_HEADS);
addRefs(refs, Constants.R_REMOTES); addRefs(refs, Constants.R_REMOTES);
try (ObjectReader reader = db.newObjectReader()) { try (ObjectReader reader = db.newObjectReader()) {
for (final Entry<String, Ref> e : printRefs.entrySet()) { for (final Entry<String, Ref> e : printRefs.entrySet()) {
final Ref ref = e.getValue(); final Ref ref = e.getValue();
printHead(reader, e.getKey(), printHead(reader, e.getKey(),
current.equals(ref.getName()), ref); current.equals(ref.getName()), ref);
}
} }
} }
} }

78
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Checkout.java

@ -89,47 +89,49 @@ class Checkout extends TextBuiltin {
throw die(CLIText.get().onBranchToBeBorn); throw die(CLIText.get().onBranchToBeBorn);
} }
CheckoutCommand command = new Git(db).checkout(); try (Git git = new Git(db)) {
if (paths.size() > 0) { CheckoutCommand command = git.checkout();
command.setStartPoint(name); if (paths.size() > 0) {
for (String path : paths) command.setStartPoint(name);
command.addPath(path); for (String path : paths)
} else { command.addPath(path);
command.setCreateBranch(createBranch); } else {
command.setName(name); command.setCreateBranch(createBranch);
command.setForce(force); command.setName(name);
command.setOrphan(orphan); command.setForce(force);
} command.setOrphan(orphan);
try { }
String oldBranch = db.getBranch(); try {
Ref ref = command.call(); String oldBranch = db.getBranch();
if (ref == null) Ref ref = command.call();
return; if (ref == null)
if (Repository.shortenRefName(ref.getName()).equals(oldBranch)) { return;
if (Repository.shortenRefName(ref.getName()).equals(oldBranch)) {
outw.println(MessageFormat.format(
CLIText.get().alreadyOnBranch,
name));
return;
}
if (createBranch || orphan)
outw.println(MessageFormat.format(
CLIText.get().switchedToNewBranch, name));
else
outw.println(MessageFormat.format(
CLIText.get().switchedToBranch,
Repository.shortenRefName(ref.getName())));
} catch (RefNotFoundException e) {
outw.println(MessageFormat.format( outw.println(MessageFormat.format(
CLIText.get().alreadyOnBranch, CLIText.get().pathspecDidNotMatch,
name));
} catch (RefAlreadyExistsException e) {
throw die(MessageFormat.format(CLIText.get().branchAlreadyExists,
name)); name));
return; } catch (CheckoutConflictException e) {
outw.println(CLIText.get().checkoutConflict);
for (String path : e.getConflictingPaths())
outw.println(MessageFormat.format(
CLIText.get().checkoutConflictPathLine, path));
} }
if (createBranch || orphan)
outw.println(MessageFormat.format(
CLIText.get().switchedToNewBranch, name));
else
outw.println(MessageFormat.format(
CLIText.get().switchedToBranch,
Repository.shortenRefName(ref.getName())));
} catch (RefNotFoundException e) {
outw.println(MessageFormat.format(
CLIText.get().pathspecDidNotMatch,
name));
} catch (RefAlreadyExistsException e) {
throw die(MessageFormat.format(CLIText.get().branchAlreadyExists,
name));
} catch (CheckoutConflictException e) {
outw.println(CLIText.get().checkoutConflict);
for (String path : e.getConflictingPaths())
outw.println(MessageFormat.format(
CLIText.get().checkoutConflictPathLine, path));
} }
} }
} }

62
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Commit.java

@ -80,37 +80,39 @@ class Commit extends TextBuiltin {
@Override @Override
protected void run() throws NoHeadException, NoMessageException, protected void run() throws NoHeadException, NoMessageException,
ConcurrentRefUpdateException, JGitInternalException, Exception { ConcurrentRefUpdateException, JGitInternalException, Exception {
CommitCommand commitCmd = new Git(db).commit(); try (Git git = new Git(db)) {
if (author != null) CommitCommand commitCmd = git.commit();
commitCmd.setAuthor(RawParseUtils.parsePersonIdent(author)); if (author != null)
if (message != null) commitCmd.setAuthor(RawParseUtils.parsePersonIdent(author));
commitCmd.setMessage(message); if (message != null)
if (only && paths.isEmpty()) commitCmd.setMessage(message);
throw die(CLIText.get().pathsRequired); if (only && paths.isEmpty())
if (only && all) throw die(CLIText.get().pathsRequired);
throw die(CLIText.get().onlyOneOfIncludeOnlyAllInteractiveCanBeUsed); if (only && all)
if (!paths.isEmpty()) throw die(CLIText.get().onlyOneOfIncludeOnlyAllInteractiveCanBeUsed);
for (String p : paths) if (!paths.isEmpty())
commitCmd.setOnly(p); for (String p : paths)
commitCmd.setAmend(amend); commitCmd.setOnly(p);
commitCmd.setAll(all); commitCmd.setAmend(amend);
Ref head = db.getRef(Constants.HEAD); commitCmd.setAll(all);
RevCommit commit; Ref head = db.getRef(Constants.HEAD);
try { RevCommit commit;
commit = commitCmd.call(); try {
} catch (JGitInternalException e) { commit = commitCmd.call();
throw die(e.getMessage()); } catch (JGitInternalException e) {
} throw die(e.getMessage());
}
String branchName; String branchName;
if (!head.isSymbolic()) if (!head.isSymbolic())
branchName = CLIText.get().branchDetachedHEAD; branchName = CLIText.get().branchDetachedHEAD;
else { else {
branchName = head.getTarget().getName(); branchName = head.getTarget().getName();
if (branchName.startsWith(Constants.R_HEADS)) if (branchName.startsWith(Constants.R_HEADS))
branchName = branchName.substring(Constants.R_HEADS.length()); branchName = branchName.substring(Constants.R_HEADS.length());
}
outw.println("[" + branchName + " " + commit.name() + "] " //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ commit.getShortMessage());
} }
outw.println("[" + branchName + " " + commit.name() + "] " //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ commit.getShortMessage());
} }
} }

29
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Describe.java

@ -61,20 +61,21 @@ class Describe extends TextBuiltin {
@Override @Override
protected void run() throws Exception { protected void run() throws Exception {
DescribeCommand cmd = new Git(db).describe(); try (Git git = new Git(db)) {
if (tree != null) DescribeCommand cmd = git.describe();
cmd.setTarget(tree); if (tree != null)
cmd.setLong(longDesc); cmd.setTarget(tree);
String result = null; cmd.setLong(longDesc);
try { String result = null;
result = cmd.call(); try {
} catch (RefNotFoundException e) { result = cmd.call();
throw die(CLIText.get().noNamesFound, e); } catch (RefNotFoundException e) {
} throw die(CLIText.get().noNamesFound, e);
if (result == null) }
throw die(CLIText.get().noNamesFound); if (result == null)
throw die(CLIText.get().noNamesFound);
outw.println(result); outw.println(result);
}
} }
} }

51
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Fetch.java

@ -104,31 +104,32 @@ class Fetch extends AbstractFetchCommand {
@Override @Override
protected void run() throws Exception { protected void run() throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
FetchCommand fetch = git.fetch(); FetchCommand fetch = git.fetch();
if (fsck != null) if (fsck != null)
fetch.setCheckFetchedObjects(fsck.booleanValue()); fetch.setCheckFetchedObjects(fsck.booleanValue());
if (prune != null) if (prune != null)
fetch.setRemoveDeletedRefs(prune.booleanValue()); fetch.setRemoveDeletedRefs(prune.booleanValue());
if (toget != null) if (toget != null)
fetch.setRefSpecs(toget); fetch.setRefSpecs(toget);
if (tags != null) { if (tags != null) {
fetch.setTagOpt(tags.booleanValue() ? TagOpt.FETCH_TAGS fetch.setTagOpt(tags.booleanValue() ? TagOpt.FETCH_TAGS
: TagOpt.NO_TAGS); : TagOpt.NO_TAGS);
}
if (0 <= timeout)
fetch.setTimeout(timeout);
fetch.setDryRun(dryRun);
fetch.setRemote(remote);
if (thin != null)
fetch.setThin(thin.booleanValue());
if (quiet == null || !quiet.booleanValue())
fetch.setProgressMonitor(new TextProgressMonitor(errw));
FetchResult result = fetch.call();
if (result.getTrackingRefUpdates().isEmpty())
return;
showFetchResult(result);
} }
if (0 <= timeout)
fetch.setTimeout(timeout);
fetch.setDryRun(dryRun);
fetch.setRemote(remote);
if (thin != null)
fetch.setThin(thin.booleanValue());
if (quiet == null || !quiet.booleanValue())
fetch.setProgressMonitor(new TextProgressMonitor(errw));
FetchResult result = fetch.call();
if (result.getTrackingRefUpdates().isEmpty())
return;
showFetchResult(result);
} }
} }

29
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Merge.java

@ -121,22 +121,23 @@ class Merge extends TextBuiltin {
CLIText.get().refDoesNotExistOrNoCommit, ref)); CLIText.get().refDoesNotExistOrNoCommit, ref));
Ref oldHead = db.getRef(Constants.HEAD); Ref oldHead = db.getRef(Constants.HEAD);
Git git = new Git(db); MergeResult result;
MergeCommand mergeCmd = git.merge().setStrategy(mergeStrategy) try (Git git = new Git(db)) {
.setSquash(squash).setFastForward(ff).setCommit(!noCommit); MergeCommand mergeCmd = git.merge().setStrategy(mergeStrategy)
if (srcRef != null) .setSquash(squash).setFastForward(ff).setCommit(!noCommit);
mergeCmd.include(srcRef); if (srcRef != null)
else mergeCmd.include(srcRef);
mergeCmd.include(src); else
mergeCmd.include(src);
if (message != null) if (message != null)
mergeCmd.setMessage(message); mergeCmd.setMessage(message);
MergeResult result; try {
try { result = mergeCmd.call();
result = mergeCmd.call(); } catch (CheckoutConflictException e) {
} catch (CheckoutConflictException e) { result = new MergeResult(e.getConflictingPaths()); // CHECKOUT_CONFLICT
result = new MergeResult(e.getConflictingPaths()); // CHECKOUT_CONFLICT }
} }
switch (result.getMergeStatus()) { switch (result.getMergeStatus()) {

37
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Push.java

@ -109,24 +109,25 @@ class Push extends TextBuiltin {
@Override @Override
protected void run() throws Exception { protected void run() throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
PushCommand push = git.push(); PushCommand push = git.push();
push.setDryRun(dryRun); push.setDryRun(dryRun);
push.setForce(force); push.setForce(force);
push.setProgressMonitor(new TextProgressMonitor(errw)); push.setProgressMonitor(new TextProgressMonitor(errw));
push.setReceivePack(receivePack); push.setReceivePack(receivePack);
push.setRefSpecs(refSpecs); push.setRefSpecs(refSpecs);
if (all) if (all)
push.setPushAll(); push.setPushAll();
if (tags) if (tags)
push.setPushTags(); push.setPushTags();
push.setRemote(remote); push.setRemote(remote);
push.setThin(thin); push.setThin(thin);
push.setTimeout(timeout); push.setTimeout(timeout);
Iterable<PushResult> results = push.call(); Iterable<PushResult> results = push.call();
for (PushResult result : results) { for (PushResult result : results) {
try (ObjectReader reader = db.newObjectReader()) { try (ObjectReader reader = db.newObjectReader()) {
printPushResult(reader, result.getURI(), result); printPushResult(reader, result.getURI(), result);
}
} }
} }
} }

16
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reflog.java

@ -59,13 +59,15 @@ class Reflog extends TextBuiltin {
@Override @Override
protected void run() throws Exception { protected void run() throws Exception {
ReflogCommand cmd = new Git(db).reflog(); try (Git git = new Git(db)) {
if (ref != null) ReflogCommand cmd = git.reflog();
cmd.setRef(ref); if (ref != null)
Collection<ReflogEntry> entries = cmd.call(); cmd.setRef(ref);
int i = 0; Collection<ReflogEntry> entries = cmd.call();
for (ReflogEntry entry : entries) { int i = 0;
outw.println(toString(entry, i++)); for (ReflogEntry entry : entries) {
outw.println(toString(entry, i++));
}
} }
} }

28
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Reset.java

@ -66,19 +66,21 @@ class Reset extends TextBuiltin {
@Override @Override
protected void run() throws Exception { protected void run() throws Exception {
ResetCommand command = new Git(db).reset(); try (Git git = new Git(db)) {
command.setRef(commit); ResetCommand command = git.reset();
ResetType mode = null; command.setRef(commit);
if (soft) ResetType mode = null;
mode = selectMode(mode, ResetType.SOFT); if (soft)
if (mixed) mode = selectMode(mode, ResetType.SOFT);
mode = selectMode(mode, ResetType.MIXED); if (mixed)
if (hard) mode = selectMode(mode, ResetType.MIXED);
mode = selectMode(mode, ResetType.HARD); if (hard)
if (mode == null) mode = selectMode(mode, ResetType.HARD);
throw die("no reset mode set"); if (mode == null)
command.setMode(mode); throw die("no reset mode set");
command.call(); command.setMode(mode);
command.call();
}
} }
private static ResetType selectMode(ResetType mode, ResetType want) { private static ResetType selectMode(ResetType mode, ResetType want) {

11
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Rm.java

@ -63,10 +63,11 @@ class Rm extends TextBuiltin {
@Override @Override
protected void run() throws Exception { protected void run() throws Exception {
RmCommand command = new Git(db).rm(); try (Git git = new Git(db)) {
for (String p : paths) RmCommand command = git.rm();
command.addFilepattern(p); for (String p : paths)
command.call(); command.addFilepattern(p);
command.call();
}
} }
} }

14
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Status.java

@ -88,12 +88,14 @@ class Status extends TextBuiltin {
@Override @Override
protected void run() throws Exception { protected void run() throws Exception {
StatusCommand statusCommand = new Git(db).status(); try (Git git = new Git(db)) {
if (filterPaths != null && filterPaths.size() > 0) StatusCommand statusCommand = git.status();
for (String path : filterPaths) if (filterPaths != null && filterPaths.size() > 0)
statusCommand.addPath(path); for (String path : filterPaths)
org.eclipse.jgit.api.Status status = statusCommand.call(); statusCommand.addPath(path);
printStatus(status); org.eclipse.jgit.api.Status status = statusCommand.call();
printStatus(status);
}
} }
private void printStatus(org.eclipse.jgit.api.Status status) private void printStatus(org.eclipse.jgit.api.Status status)

39
org.eclipse.jgit.pgm/src/org/eclipse/jgit/pgm/Tag.java

@ -79,26 +79,27 @@ class Tag extends TextBuiltin {
@Override @Override
protected void run() throws Exception { protected void run() throws Exception {
Git git = new Git(db); try (Git git = new Git(db)) {
if (tagName != null) { if (tagName != null) {
TagCommand command = git.tag().setForceUpdate(force) TagCommand command = git.tag().setForceUpdate(force)
.setMessage(message).setName(tagName); .setMessage(message).setName(tagName);
if (object != null) { if (object != null) {
RevWalk walk = new RevWalk(db); RevWalk walk = new RevWalk(db);
command.setObjectId(walk.parseAny(object)); command.setObjectId(walk.parseAny(object));
} }
try { try {
command.call(); command.call();
} catch (RefAlreadyExistsException e) { } catch (RefAlreadyExistsException e) {
throw die(MessageFormat.format(CLIText.get().tagAlreadyExists, throw die(MessageFormat.format(CLIText.get().tagAlreadyExists,
tagName)); tagName));
} }
} else { } else {
ListTagCommand command = git.tagList(); ListTagCommand command = git.tagList();
List<Ref> list = command.call(); List<Ref> list = command.call();
for (Ref ref : list) { for (Ref ref : list) {
outw.println(Repository.shortenRefName(ref.getName())); outw.println(Repository.shortenRefName(ref.getName()));
}
} }
} }
} }

Loading…
Cancel
Save