# HG changeset patch # User Matt Mackall # Date 1198816057 21600 # Node ID 9cedc3fbbebb5536782f3f3d0ab108eb5e26f839 # Parent 4cf5a4950fc92adcca7a67c03ba6bf3e0db3bfb2 merge: simplify merge tests, fix exec flag bug If local changed exec bit and remote changed file contents, exec bit change would be lost. diff -r 4cf5a4950fc9 -r 9cedc3fbbebb mercurial/merge.py --- a/mercurial/merge.py Thu Dec 27 22:28:41 2007 +0100 +++ b/mercurial/merge.py Thu Dec 27 22:27:37 2007 -0600 @@ -389,14 +389,18 @@ # are files different? if n != m2[f]: a = ma.get(f, nullid) + # are we clobbering? + if overwrite: + act("clobbering", "g", f, m2.flags(f)) + # or are we going back in time and clean? + elif backwards and not n[20:]: + act("reverting", "g", f, m2.flags(f)) # are both different from the ancestor? - if not overwrite and n != a and m2[f] != a: + elif n != a and m2[f] != a: act("versions differ", "m", f, f, f, fmerge(f), False) - # are we clobbering? # is remote's version newer? - # or are we going back in time and clean? - elif overwrite or m2[f] != a or (backwards and not n[20:]): - act("remote is newer", "g", f, m2.flags(f)) + elif m2[f] != a: + act("remote is newer", "g", f, fmerge(f)) # local is newer, not overwrite, check mode bits elif fmerge(f) != m1.flags(f): act("update permissions", "e", f, m2.flags(f))