diff options
author | Robin Stocker <robin@nibor.org> | 2011-02-01 22:27:33 +0100 |
---|---|---|
committer | Robin Stocker <robin@nibor.org> | 2011-02-01 22:27:33 +0100 |
commit | b0245b548b9c9fe1801fb8af727b08a7c3cc9706 (patch) | |
tree | 04ce836acaff18892aed1e9b625d05f04622ba36 | |
parent | 13bcf05a9ea2d4943faef2c879aac65d37517eb6 (diff) | |
download | jgit-b0245b548b9c9fe1801fb8af727b08a7c3cc9706.tar.gz jgit-b0245b548b9c9fe1801fb8af727b08a7c3cc9706.zip |
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
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/merge/MergeMessageFormatterTest.java | 10 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/merge/MergeMessageFormatter.java | 3 |
2 files changed, 12 insertions, 1 deletions
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 2fbcd093db..04cfa25197 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 cb2f8a522c..cdd7a2f371 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); |