To prevent potential resource leak. Change-Id: I8ac4ae61193324849bafb46501a55f93c5029a4e Signed-off-by: David Pursehouse <david.pursehouse@sonymobile.com>tags/v4.2.0.201511101648-m1
@Override | @Override | ||||
protected void run() throws Exception { | protected void run() throws Exception { | ||||
AddCommand addCmd = new Git(db).add(); | |||||
addCmd.setUpdate(update); | |||||
for (String p : filepatterns) | |||||
addCmd.addFilepattern(p); | |||||
addCmd.call(); | |||||
try (Git git = new Git(db)) { | |||||
AddCommand addCmd = git.add(); | |||||
addCmd.setUpdate(update); | |||||
for (String p : filepatterns) | |||||
addCmd.addFilepattern(p); | |||||
addCmd.call(); | |||||
} | |||||
} | } | ||||
} | } |
else | else | ||||
stream = outs; | stream = outs; | ||||
try { | |||||
ArchiveCommand cmd = new Git(db).archive() | |||||
try (Git git = new Git(db)) { | |||||
ArchiveCommand cmd = git.archive() | |||||
.setTree(tree) | .setTree(tree) | ||||
.setFormat(format) | .setFormat(format) | ||||
.setPrefix(prefix) | .setPrefix(prefix) |
// 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(); | |||||
if (all) | |||||
command.setListMode(ListMode.ALL); | |||||
else if (remote) | |||||
command.setListMode(ListMode.REMOTE); | |||||
try (Git git = new Git(db)) { | |||||
ListBranchCommand command = git.branchList(); | |||||
if (all) | |||||
command.setListMode(ListMode.ALL); | |||||
else if (remote) | |||||
command.setListMode(ListMode.REMOTE); | |||||
if (containsCommitish != null) | |||||
command.setContains(containsCommitish); | |||||
if (containsCommitish != null) | |||||
command.setContains(containsCommitish); | |||||
List<Ref> refs = command.call(); | |||||
for (Ref ref : refs) { | |||||
if (ref.getName().equals(Constants.HEAD)) | |||||
addRef("(no branch)", head); //$NON-NLS-1$ | |||||
} | |||||
List<Ref> refs = command.call(); | |||||
for (Ref ref : refs) { | |||||
if (ref.getName().equals(Constants.HEAD)) | |||||
addRef("(no branch)", head); //$NON-NLS-1$ | |||||
} | |||||
addRefs(refs, Constants.R_HEADS); | |||||
addRefs(refs, Constants.R_REMOTES); | |||||
addRefs(refs, Constants.R_HEADS); | |||||
addRefs(refs, Constants.R_REMOTES); | |||||
try (ObjectReader reader = db.newObjectReader()) { | |||||
for (final Entry<String, Ref> e : printRefs.entrySet()) { | |||||
final Ref ref = e.getValue(); | |||||
printHead(reader, e.getKey(), | |||||
current.equals(ref.getName()), ref); | |||||
try (ObjectReader reader = db.newObjectReader()) { | |||||
for (final Entry<String, Ref> e : printRefs.entrySet()) { | |||||
final Ref ref = e.getValue(); | |||||
printHead(reader, e.getKey(), | |||||
current.equals(ref.getName()), ref); | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } |
throw die(CLIText.get().onBranchToBeBorn); | throw die(CLIText.get().onBranchToBeBorn); | ||||
} | } | ||||
CheckoutCommand command = new Git(db).checkout(); | |||||
if (paths.size() > 0) { | |||||
command.setStartPoint(name); | |||||
for (String path : paths) | |||||
command.addPath(path); | |||||
} else { | |||||
command.setCreateBranch(createBranch); | |||||
command.setName(name); | |||||
command.setForce(force); | |||||
command.setOrphan(orphan); | |||||
} | |||||
try { | |||||
String oldBranch = db.getBranch(); | |||||
Ref ref = command.call(); | |||||
if (ref == null) | |||||
return; | |||||
if (Repository.shortenRefName(ref.getName()).equals(oldBranch)) { | |||||
try (Git git = new Git(db)) { | |||||
CheckoutCommand command = git.checkout(); | |||||
if (paths.size() > 0) { | |||||
command.setStartPoint(name); | |||||
for (String path : paths) | |||||
command.addPath(path); | |||||
} else { | |||||
command.setCreateBranch(createBranch); | |||||
command.setName(name); | |||||
command.setForce(force); | |||||
command.setOrphan(orphan); | |||||
} | |||||
try { | |||||
String oldBranch = db.getBranch(); | |||||
Ref ref = command.call(); | |||||
if (ref == null) | |||||
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)); | |||||
} | } | ||||
} | } | ||||
} | } |
@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(); | |||||
if (author != null) | |||||
commitCmd.setAuthor(RawParseUtils.parsePersonIdent(author)); | |||||
if (message != null) | |||||
commitCmd.setMessage(message); | |||||
if (only && paths.isEmpty()) | |||||
throw die(CLIText.get().pathsRequired); | |||||
if (only && all) | |||||
throw die(CLIText.get().onlyOneOfIncludeOnlyAllInteractiveCanBeUsed); | |||||
if (!paths.isEmpty()) | |||||
for (String p : paths) | |||||
commitCmd.setOnly(p); | |||||
commitCmd.setAmend(amend); | |||||
commitCmd.setAll(all); | |||||
Ref head = db.getRef(Constants.HEAD); | |||||
RevCommit commit; | |||||
try { | |||||
commit = commitCmd.call(); | |||||
} catch (JGitInternalException e) { | |||||
throw die(e.getMessage()); | |||||
} | |||||
try (Git git = new Git(db)) { | |||||
CommitCommand commitCmd = git.commit(); | |||||
if (author != null) | |||||
commitCmd.setAuthor(RawParseUtils.parsePersonIdent(author)); | |||||
if (message != null) | |||||
commitCmd.setMessage(message); | |||||
if (only && paths.isEmpty()) | |||||
throw die(CLIText.get().pathsRequired); | |||||
if (only && all) | |||||
throw die(CLIText.get().onlyOneOfIncludeOnlyAllInteractiveCanBeUsed); | |||||
if (!paths.isEmpty()) | |||||
for (String p : paths) | |||||
commitCmd.setOnly(p); | |||||
commitCmd.setAmend(amend); | |||||
commitCmd.setAll(all); | |||||
Ref head = db.getRef(Constants.HEAD); | |||||
RevCommit commit; | |||||
try { | |||||
commit = commitCmd.call(); | |||||
} catch (JGitInternalException e) { | |||||
throw die(e.getMessage()); | |||||
} | |||||
String branchName; | |||||
if (!head.isSymbolic()) | |||||
branchName = CLIText.get().branchDetachedHEAD; | |||||
else { | |||||
branchName = head.getTarget().getName(); | |||||
if (branchName.startsWith(Constants.R_HEADS)) | |||||
branchName = branchName.substring(Constants.R_HEADS.length()); | |||||
String branchName; | |||||
if (!head.isSymbolic()) | |||||
branchName = CLIText.get().branchDetachedHEAD; | |||||
else { | |||||
branchName = head.getTarget().getName(); | |||||
if (branchName.startsWith(Constants.R_HEADS)) | |||||
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()); | |||||
} | } | ||||
} | } |
@Override | @Override | ||||
protected void run() throws Exception { | protected void run() throws Exception { | ||||
DescribeCommand cmd = new Git(db).describe(); | |||||
if (tree != null) | |||||
cmd.setTarget(tree); | |||||
cmd.setLong(longDesc); | |||||
String result = null; | |||||
try { | |||||
result = cmd.call(); | |||||
} catch (RefNotFoundException e) { | |||||
throw die(CLIText.get().noNamesFound, e); | |||||
} | |||||
if (result == null) | |||||
throw die(CLIText.get().noNamesFound); | |||||
try (Git git = new Git(db)) { | |||||
DescribeCommand cmd = git.describe(); | |||||
if (tree != null) | |||||
cmd.setTarget(tree); | |||||
cmd.setLong(longDesc); | |||||
String result = null; | |||||
try { | |||||
result = cmd.call(); | |||||
} catch (RefNotFoundException e) { | |||||
throw die(CLIText.get().noNamesFound, e); | |||||
} | |||||
if (result == null) | |||||
throw die(CLIText.get().noNamesFound); | |||||
outw.println(result); | |||||
outw.println(result); | |||||
} | |||||
} | } | ||||
} | } |
@Override | @Override | ||||
protected void run() throws Exception { | protected void run() throws Exception { | ||||
Git git = new Git(db); | |||||
FetchCommand fetch = git.fetch(); | |||||
if (fsck != null) | |||||
fetch.setCheckFetchedObjects(fsck.booleanValue()); | |||||
if (prune != null) | |||||
fetch.setRemoveDeletedRefs(prune.booleanValue()); | |||||
if (toget != null) | |||||
fetch.setRefSpecs(toget); | |||||
if (tags != null) { | |||||
fetch.setTagOpt(tags.booleanValue() ? TagOpt.FETCH_TAGS | |||||
: TagOpt.NO_TAGS); | |||||
try (Git git = new Git(db)) { | |||||
FetchCommand fetch = git.fetch(); | |||||
if (fsck != null) | |||||
fetch.setCheckFetchedObjects(fsck.booleanValue()); | |||||
if (prune != null) | |||||
fetch.setRemoveDeletedRefs(prune.booleanValue()); | |||||
if (toget != null) | |||||
fetch.setRefSpecs(toget); | |||||
if (tags != null) { | |||||
fetch.setTagOpt(tags.booleanValue() ? TagOpt.FETCH_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); | |||||
} | } | ||||
} | } |
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); | |||||
MergeCommand mergeCmd = git.merge().setStrategy(mergeStrategy) | |||||
.setSquash(squash).setFastForward(ff).setCommit(!noCommit); | |||||
if (srcRef != null) | |||||
mergeCmd.include(srcRef); | |||||
else | |||||
mergeCmd.include(src); | |||||
MergeResult result; | |||||
try (Git git = new Git(db)) { | |||||
MergeCommand mergeCmd = git.merge().setStrategy(mergeStrategy) | |||||
.setSquash(squash).setFastForward(ff).setCommit(!noCommit); | |||||
if (srcRef != null) | |||||
mergeCmd.include(srcRef); | |||||
else | |||||
mergeCmd.include(src); | |||||
if (message != null) | |||||
mergeCmd.setMessage(message); | |||||
if (message != null) | |||||
mergeCmd.setMessage(message); | |||||
MergeResult result; | |||||
try { | |||||
result = mergeCmd.call(); | |||||
} catch (CheckoutConflictException e) { | |||||
result = new MergeResult(e.getConflictingPaths()); // CHECKOUT_CONFLICT | |||||
try { | |||||
result = mergeCmd.call(); | |||||
} catch (CheckoutConflictException e) { | |||||
result = new MergeResult(e.getConflictingPaths()); // CHECKOUT_CONFLICT | |||||
} | |||||
} | } | ||||
switch (result.getMergeStatus()) { | switch (result.getMergeStatus()) { |
@Override | @Override | ||||
protected void run() throws Exception { | protected void run() throws Exception { | ||||
Git git = new Git(db); | |||||
PushCommand push = git.push(); | |||||
push.setDryRun(dryRun); | |||||
push.setForce(force); | |||||
push.setProgressMonitor(new TextProgressMonitor(errw)); | |||||
push.setReceivePack(receivePack); | |||||
push.setRefSpecs(refSpecs); | |||||
if (all) | |||||
push.setPushAll(); | |||||
if (tags) | |||||
push.setPushTags(); | |||||
push.setRemote(remote); | |||||
push.setThin(thin); | |||||
push.setTimeout(timeout); | |||||
Iterable<PushResult> results = push.call(); | |||||
for (PushResult result : results) { | |||||
try (ObjectReader reader = db.newObjectReader()) { | |||||
printPushResult(reader, result.getURI(), result); | |||||
try (Git git = new Git(db)) { | |||||
PushCommand push = git.push(); | |||||
push.setDryRun(dryRun); | |||||
push.setForce(force); | |||||
push.setProgressMonitor(new TextProgressMonitor(errw)); | |||||
push.setReceivePack(receivePack); | |||||
push.setRefSpecs(refSpecs); | |||||
if (all) | |||||
push.setPushAll(); | |||||
if (tags) | |||||
push.setPushTags(); | |||||
push.setRemote(remote); | |||||
push.setThin(thin); | |||||
push.setTimeout(timeout); | |||||
Iterable<PushResult> results = push.call(); | |||||
for (PushResult result : results) { | |||||
try (ObjectReader reader = db.newObjectReader()) { | |||||
printPushResult(reader, result.getURI(), result); | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } |
@Override | @Override | ||||
protected void run() throws Exception { | protected void run() throws Exception { | ||||
ReflogCommand cmd = new Git(db).reflog(); | |||||
if (ref != null) | |||||
cmd.setRef(ref); | |||||
Collection<ReflogEntry> entries = cmd.call(); | |||||
int i = 0; | |||||
for (ReflogEntry entry : entries) { | |||||
outw.println(toString(entry, i++)); | |||||
try (Git git = new Git(db)) { | |||||
ReflogCommand cmd = git.reflog(); | |||||
if (ref != null) | |||||
cmd.setRef(ref); | |||||
Collection<ReflogEntry> entries = cmd.call(); | |||||
int i = 0; | |||||
for (ReflogEntry entry : entries) { | |||||
outw.println(toString(entry, i++)); | |||||
} | |||||
} | } | ||||
} | } | ||||
@Override | @Override | ||||
protected void run() throws Exception { | protected void run() throws Exception { | ||||
ResetCommand command = new Git(db).reset(); | |||||
command.setRef(commit); | |||||
ResetType mode = null; | |||||
if (soft) | |||||
mode = selectMode(mode, ResetType.SOFT); | |||||
if (mixed) | |||||
mode = selectMode(mode, ResetType.MIXED); | |||||
if (hard) | |||||
mode = selectMode(mode, ResetType.HARD); | |||||
if (mode == null) | |||||
throw die("no reset mode set"); | |||||
command.setMode(mode); | |||||
command.call(); | |||||
try (Git git = new Git(db)) { | |||||
ResetCommand command = git.reset(); | |||||
command.setRef(commit); | |||||
ResetType mode = null; | |||||
if (soft) | |||||
mode = selectMode(mode, ResetType.SOFT); | |||||
if (mixed) | |||||
mode = selectMode(mode, ResetType.MIXED); | |||||
if (hard) | |||||
mode = selectMode(mode, ResetType.HARD); | |||||
if (mode == null) | |||||
throw die("no reset mode set"); | |||||
command.setMode(mode); | |||||
command.call(); | |||||
} | |||||
} | } | ||||
private static ResetType selectMode(ResetType mode, ResetType want) { | private static ResetType selectMode(ResetType mode, ResetType want) { |
@Override | @Override | ||||
protected void run() throws Exception { | protected void run() throws Exception { | ||||
RmCommand command = new Git(db).rm(); | |||||
for (String p : paths) | |||||
command.addFilepattern(p); | |||||
command.call(); | |||||
try (Git git = new Git(db)) { | |||||
RmCommand command = git.rm(); | |||||
for (String p : paths) | |||||
command.addFilepattern(p); | |||||
command.call(); | |||||
} | |||||
} | } | ||||
} | } |
@Override | @Override | ||||
protected void run() throws Exception { | protected void run() throws Exception { | ||||
StatusCommand statusCommand = new Git(db).status(); | |||||
if (filterPaths != null && filterPaths.size() > 0) | |||||
for (String path : filterPaths) | |||||
statusCommand.addPath(path); | |||||
org.eclipse.jgit.api.Status status = statusCommand.call(); | |||||
printStatus(status); | |||||
try (Git git = new Git(db)) { | |||||
StatusCommand statusCommand = git.status(); | |||||
if (filterPaths != null && filterPaths.size() > 0) | |||||
for (String path : filterPaths) | |||||
statusCommand.addPath(path); | |||||
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) |
@Override | @Override | ||||
protected void run() throws Exception { | protected void run() throws Exception { | ||||
Git git = new Git(db); | |||||
if (tagName != null) { | |||||
TagCommand command = git.tag().setForceUpdate(force) | |||||
.setMessage(message).setName(tagName); | |||||
try (Git git = new Git(db)) { | |||||
if (tagName != null) { | |||||
TagCommand command = git.tag().setForceUpdate(force) | |||||
.setMessage(message).setName(tagName); | |||||
if (object != null) { | |||||
RevWalk walk = new RevWalk(db); | |||||
command.setObjectId(walk.parseAny(object)); | |||||
} | |||||
try { | |||||
command.call(); | |||||
} catch (RefAlreadyExistsException e) { | |||||
throw die(MessageFormat.format(CLIText.get().tagAlreadyExists, | |||||
tagName)); | |||||
} | |||||
} else { | |||||
ListTagCommand command = git.tagList(); | |||||
List<Ref> list = command.call(); | |||||
for (Ref ref : list) { | |||||
outw.println(Repository.shortenRefName(ref.getName())); | |||||
if (object != null) { | |||||
RevWalk walk = new RevWalk(db); | |||||
command.setObjectId(walk.parseAny(object)); | |||||
} | |||||
try { | |||||
command.call(); | |||||
} catch (RefAlreadyExistsException e) { | |||||
throw die(MessageFormat.format(CLIText.get().tagAlreadyExists, | |||||
tagName)); | |||||
} | |||||
} else { | |||||
ListTagCommand command = git.tagList(); | |||||
List<Ref> list = command.call(); | |||||
for (Ref ref : list) { | |||||
outw.println(Repository.shortenRefName(ref.getName())); | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } |