summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: cc58d7d)
raw | patch | inline | side by side (parent: cc58d7d)
author | Junio C Hamano <gitster@pobox.com> | |
Fri, 29 Aug 2008 17:24:45 +0000 (10:24 -0700) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Sun, 31 Aug 2008 02:41:43 +0000 (19:41 -0700) |
This teaches rerere to grok conflicts expressed in "diff3 -m" style
output, where the version from the common ancestor is output after the
first side, preceded by a "|||||||" line.
The rerere database needs to keep only the versions from two sides, so the
code parses the original copy and discards it.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
output, where the version from the common ancestor is output after the
first side, preceded by a "|||||||" line.
The rerere database needs to keep only the versions from two sides, so the
code parses the original copy and discards it.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
rerere.c | patch | blob | history |
diff --git a/rerere.c b/rerere.c
index bf74b262f0cc232ba118d34dd7676ce67d3a1d9e..4e2c9dd5b7276acd11ddb6ffa6619962ef9f57f3 100644 (file)
--- a/rerere.c
+++ b/rerere.c
char buf[1024];
int hunk_no = 0;
enum {
- RR_CONTEXT = 0, RR_SIDE_1, RR_SIDE_2,
+ RR_CONTEXT = 0, RR_SIDE_1, RR_SIDE_2, RR_ORIGINAL,
} hunk = RR_CONTEXT;
struct strbuf one, two;
FILE *f = fopen(path, "r");
if (hunk != RR_CONTEXT)
goto bad;
hunk = RR_SIDE_1;
- } else if (!prefixcmp(buf, "=======") && isspace(buf[7])) {
+ } else if (!prefixcmp(buf, "|||||||") && isspace(buf[7])) {
if (hunk != RR_SIDE_1)
goto bad;
+ hunk = RR_ORIGINAL;
+ } else if (!prefixcmp(buf, "=======") && isspace(buf[7])) {
+ if (hunk != RR_SIDE_1 && hunk != RR_ORIGINAL)
+ goto bad;
hunk = RR_SIDE_2;
} else if (!prefixcmp(buf, ">>>>>>> ")) {
if (hunk != RR_SIDE_2)
strbuf_reset(&two);
} else if (hunk == RR_SIDE_1)
strbuf_addstr(&one, buf);
+ else if (hunk == RR_ORIGINAL)
+ ; /* discard */
else if (hunk == RR_SIDE_2)
strbuf_addstr(&two, buf);
else if (out)