From b0245b548b9c9fe1801fb8af727b08a7c3cc9706 Mon Sep 17 00:00:00 2001 From: Robin Stocker Date: Tue, 1 Feb 2011 22:27:33 +0100 Subject: [PATCH] Don't print "into HEAD" when merging refs/heads/master When MergeMessageFormatter was given a symbolic ref HEAD which points to refs/heads/master (which is the case when merging a branch in EGit), it would result in a merge message like the following: Merge branch 'a' into HEAD But it should print the following (as C Git does): Merge branch 'a' The solution is to use the leaf ref when checking for refs/heads/master. Change-Id: I28ae5713b7e8123a0176fc6d7356e469900e7e97 --- .../eclipse/jgit/merge/MergeMessageFormatterTest.java | 10 ++++++++++ .../org/eclipse/jgit/merge/MergeMessageFormatter.java | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeMessageFormatterTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeMessageFormatterTest.java index 2fbcd093d..04cfa2519 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeMessageFormatterTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeMessageFormatterTest.java @@ -50,6 +50,7 @@ import java.util.Arrays; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectIdRef; import org.eclipse.jgit.lib.Ref; +import org.eclipse.jgit.lib.SymbolicRef; import org.eclipse.jgit.lib.Ref.Storage; import org.eclipse.jgit.lib.RefUpdate; import org.eclipse.jgit.lib.SampleDataRepositoryTestCase; @@ -166,4 +167,13 @@ public class MergeMessageFormatterTest extends SampleDataRepositoryTestCase { String message = formatter.format(Arrays.asList(a), b); assertEquals("Merge branch 'a' into b", message); } + + @Test + public void testIntoSymbolicRefHeadPointingToMaster() throws IOException { + Ref a = db.getRef("refs/heads/a"); + Ref master = db.getRef("refs/heads/master"); + SymbolicRef head = new SymbolicRef("HEAD", master); + String message = formatter.format(Arrays.asList(a), head); + assertEquals("Merge branch 'a'", message); + } } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeMessageFormatter.java b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeMessageFormatter.java index cb2f8a522..cdd7a2f37 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeMessageFormatter.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeMessageFormatter.java @@ -113,7 +113,8 @@ public class MergeMessageFormatter { sb.append(StringUtils.join(listings, ", ")); - if (!target.getName().equals(Constants.R_HEADS + Constants.MASTER)) { + String targetName = target.getLeaf().getName(); + if (!targetName.equals(Constants.R_HEADS + Constants.MASTER)) { String targetShortName = Repository .shortenRefName(target.getName()); sb.append(" into " + targetShortName);