X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=builtin-merge-recursive.c;h=910c0d20e7ba1128c705a49bfd9966212c5420b2;hb=008442f5e798e511cc0cd5d9443552b0d107d558;hp=5c7fbb2599d07ad7415ae8dfef205356ac3b0bbb;hpb=b75aaa546e0593440d85c77d380c9b53e126ea02;p=git.git diff --git a/builtin-merge-recursive.c b/builtin-merge-recursive.c index 5c7fbb259..910c0d20e 100644 --- a/builtin-merge-recursive.c +++ b/builtin-merge-recursive.c @@ -668,9 +668,20 @@ static struct merge_file_info merge_file(struct diff_filespec *o, if (!sha_eq(a->sha1, o->sha1) && !sha_eq(b->sha1, o->sha1)) result.merge = 1; - result.mode = a->mode == o->mode ? b->mode: a->mode; + /* + * Merge modes + */ + if (a->mode == b->mode || a->mode == o->mode) + result.mode = b->mode; + else { + result.mode = a->mode; + if (b->mode != o->mode) { + result.clean = 0; + result.merge = 1; + } + } - if (sha_eq(a->sha1, o->sha1)) + if (sha_eq(a->sha1, b->sha1) || sha_eq(a->sha1, o->sha1)) hashcpy(result.sha, b->sha1); else if (sha_eq(b->sha1, o->sha1)) hashcpy(result.sha, a->sha1);