On Thu, Apr 12, 2018 at 4:17 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > > A bit of detour. "Change in side branch happened to be a subset of > the change in trunk and gets subsumed, but we end up writing the > same result" happens also with the simpler resolve strategy. > > Here is a fix. Heh. Except git-merge-one-file.sh is *only* used for that case, so this doesn't fix the normal case. I verified that the normal case situation is that "update_file_flags()" thing that checks out the end result. It's called by this case: } else if (a_oid && b_oid) { /* Case C: Added in both (check for same permissions) and */ /* case D: Modified in both, but differently. */ clean_merge = merge_content(o, path, o_oid, o_mode, a_oid, a_mode, b_oid, b_mode, NULL); in process_entry(), and I think we could just there add a test for if o_old,o_mod == a_oid,a_mode or something? Linus