Merge "blame: Fix merges, where merge result differs only by whitespace"
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 743e16d..0745eb6 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 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 void testConflictingMerge2() throws Exception {
 		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 ca695d2..a54ef56 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 @@ private boolean processMerge(Candidate n) throws IOException {
 				}
 
 				p.regionList = n.regionList;
-				push(p);
-				return false;
+				n.regionList = null;
+				parents[pIdx] = p;
+				break;
 			}
 
 			p.takeBlame(editList, n);