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 <robin.rosenberg@dewire.com>
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
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 8caff06..dd9f0c4 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 Ref call() throws JGitInternalException, RefAlreadyExistsException,
 			}
 
 			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 Ref call() throws JGitInternalException, RefAlreadyExistsException,
 			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 Ref call() throws JGitInternalException, RefAlreadyExistsException,
 		}
 	}
 
+	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.