From: Robin Rosenberg Date: Sun, 4 Sep 2011 09:12:49 +0000 (+0200) Subject: Fix the names in the reflog for checkouts X-Git-Tag: v1.1.0.201109071825-rc3~2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fchanges%2F39%2F4139%2F2;p=jgit.git Fix the names in the reflog for checkouts We were diverging from the reference implementation. Always use the ref we checkout to as the to-branch the reflog and avoid the refs/heads both in the from-name and to-name. Change-Id: Id973d9102593872e4df41d0788f0eb7c7fd130c4 Signed-off-by: Robin Rosenberg Signed-off-by: Matthias Sohn --- diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java index 8caff06292..dd9f0c4567 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java @@ -143,8 +143,8 @@ public class CheckoutCommand extends GitCommand { } Ref headRef = repo.getRef(Constants.HEAD); - String refLogMessage = "checkout: moving from " - + headRef.getTarget().getName(); + String shortHeadRef = getShortBranchName(headRef); + String refLogMessage = "checkout: moving from " + shortHeadRef; ObjectId branch = repo.resolve(name); if (branch == null) throw new RefNotFoundException(MessageFormat.format(JGitText @@ -169,10 +169,10 @@ public class CheckoutCommand extends GitCommand { Ref ref = repo.getRef(name); if (ref != null && !ref.getName().startsWith(Constants.R_HEADS)) ref = null; + String toName = Repository.shortenRefName(name); RefUpdate refUpdate = repo.updateRef(Constants.HEAD, ref == null); refUpdate.setForceUpdate(force); - refUpdate.setRefLogMessage(refLogMessage + " to " - + newCommit.getName(), false); + refUpdate.setRefLogMessage(refLogMessage + " to " + toName, false); Result updateResult; if (ref != null) updateResult = refUpdate.link(ref.getName()); @@ -216,6 +216,12 @@ public class CheckoutCommand extends GitCommand { } } + private String getShortBranchName(Ref headRef) { + if (headRef.getTarget().getName().equals(headRef.getName())) + return headRef.getTarget().getObjectId().getName(); + return Repository.shortenRefName(headRef.getTarget().getName()); + } + /** * @param path * Path to update in the working tree and index.