]> source.dussan.org Git - jgit.git/commitdiff
Fix the names in the reflog for checkouts 39/4139/2
authorRobin Rosenberg <robin.rosenberg@dewire.com>
Sun, 4 Sep 2011 09:12:49 +0000 (11:12 +0200)
committerMatthias Sohn <matthias.sohn@sap.com>
Mon, 5 Sep 2011 15:02:16 +0000 (17:02 +0200)
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>
org.eclipse.jgit/src/org/eclipse/jgit/api/CheckoutCommand.java

index 8caff062928e812d8cf11b01b46255f4a774ff14..dd9f0c4567eaca8634184079afdb71e2a734e3b4 100644 (file)
@@ -143,8 +143,8 @@ public class CheckoutCommand extends GitCommand<Ref> {
                        }
 
                        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 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<Ref> {
                }
        }
 
+       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.