summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: bf1c32b)
raw | patch | inline | side by side (parent: bf1c32b)
author | Junio C Hamano <junkio@cox.net> | |
Thu, 2 Feb 2006 09:28:08 +0000 (01:28 -0800) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Thu, 2 Feb 2006 10:02:20 +0000 (02:02 -0800) |
The earlier change implemented "only two version" check but
without checking if the change rewrites from all the parents.
This implements a check to make sure that a change introduced
by the merge from all the parents is caught to be interesting.
Signed-off-by: Junio C Hamano <junkio@cox.net>
without checking if the change rewrites from all the parents.
This implements a check to make sure that a change introduced
by the merge from all the parents is caught to be interesting.
Signed-off-by: Junio C Hamano <junkio@cox.net>
combine-diff.c | patch | blob | history |
diff --git a/combine-diff.c b/combine-diff.c
index 44931b2a893a60177f81fd98ebfcbb442c368143..8f295c89d0e75647f6bac0b370b8f25f5ebe5ec3 100644 (file)
--- a/combine-diff.c
+++ b/combine-diff.c
hunk_end = j;
/* [i..hunk_end) are interesting. Now is it really
- * interesting?
+ * interesting? We check if there are only two versions
+ * and the result matches one of them. That is, we look
+ * at:
+ * (+) line, which records lines added to which parents;
+ * this line appears in the result.
+ * (-) line, which records from what parents the line
+ * was removed; this line does not appear in the result.
+ * then check the set of parents the result has difference
+ * from, from all lines. If there are lines that has
+ * different set of parents that the result has differences
+ * from, that means we have more than two versions.
+ *
+ * Even when we have only two versions, if the result does
+ * not match any of the parents, the it should be considered
+ * interesting. In such a case, we would have all '+' line.
+ * After passing the above "two versions" test, that would
+ * appear as "the same set of parents" to be "all parents".
*/
same_diff = 0;
has_interesting = 0;
}
}
- if (!has_interesting) {
+ if (!has_interesting && same_diff != all_mask) {
/* This hunk is not that interesting after all */
for (j = hunk_begin; j < hunk_end; j++)
sline[j].flag &= ~mark;