diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/BlameCommandTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/BlameCommandTest.java index 743e16de0..0745eb6c8 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/BlameCommandTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/api/BlameCommandTest.java @@ -47,8 +47,10 @@ import static org.junit.Assert.assertNotNull; import java.io.File; +import org.eclipse.jgit.api.MergeCommand.FastForwardMode; import org.eclipse.jgit.api.ResetCommand.ResetType; import org.eclipse.jgit.blame.BlameResult; +import org.eclipse.jgit.diff.RawTextComparator; import org.eclipse.jgit.junit.RepositoryTestCase; import org.eclipse.jgit.lib.ConfigConstants; import org.eclipse.jgit.lib.CoreConfig.AutoCRLF; @@ -456,4 +458,33 @@ public class BlameCommandTest extends RepositoryTestCase { assertEquals(merge, lines.getSourceCommit(3)); assertEquals(base, lines.getSourceCommit(4)); } + + @Test + public void testWhitespaceMerge() throws Exception { + Git git = new Git(db); + RevCommit base = commitFile("file.txt", join("0", "1", "2"), "master"); + RevCommit side = commitFile("file.txt", join("0", "1", " 2 side "), + "side"); + + checkoutBranch("refs/heads/master"); + git.merge().setFastForward(FastForwardMode.NO_FF).include(side).call(); + + // change whitespace, so the merge content is not identical to side, but + // is the same when ignoring whitespace + writeTrashFile("file.txt", join("0", "1", "2 side")); + RevCommit merge = git.commit().setAll(true).setMessage("merge") + .setAmend(true) + .call(); + + BlameCommand command = new BlameCommand(db); + command.setFilePath("file.txt") + .setTextComparator(RawTextComparator.WS_IGNORE_ALL) + .setStartCommit(merge.getId()); + BlameResult lines = command.call(); + + assertEquals(3, lines.getResultContents().size()); + assertEquals(base, lines.getSourceCommit(0)); + assertEquals(base, lines.getSourceCommit(1)); + assertEquals(side, lines.getSourceCommit(2)); + } } diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java index ca695d2a8..a54ef5669 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/blame/BlameGenerator.java @@ -768,8 +768,9 @@ public class BlameGenerator { } p.regionList = n.regionList; - push(p); - return false; + n.regionList = null; + parents[pIdx] = p; + break; } p.takeBlame(editList, n);