# HG changeset patch # User Matt Mackall # Date 1244502884 18000 # Node ID f177bdab261b42056b74089ac49c96d649b2c544 # Parent e8d80e0835c72d944ad6c44373e4d4b166cc6fec merge: simplify file revision comparison logic diff -r e8d80e0835c7 -r f177bdab261b mercurial/merge.py --- a/mercurial/merge.py Mon Jun 08 18:14:44 2009 -0500 +++ b/mercurial/merge.py Mon Jun 08 18:14:44 2009 -0500 @@ -174,22 +174,16 @@ continue if f in m2: rflags = fmerge(f, f, f) - # are files different? - if n != m2[f]: - a = ma.get(f, nullid) - # is remote's version newer? - if m2[f] != a: - # are both different from the ancestor? - if n != a: - act("versions differ", "m", f, f, f, rflags, False) - else: - act("remote is newer", "g", f, rflags) - continue - # contents don't need updating, check mode bits - if m1.flags(f) != rflags: - act("update permissions", "e", f, rflags) - elif f in copied: - continue + a = ma.get(f, nullid) + if n == m2[f] or m2[f] == a: # same or local newer + if m1.flags(f) != rflags: + act("update permissions", "e", f, rflags) + elif n == a: # remote newer + act("remote is newer", "g", f, rflags) + else: # both changed + act("versions differ", "m", f, f, f, rflags, False) + elif f in copied: # files we'll deal with on m2 side + pass elif f in copy: f2 = copy[f] if f2 not in m2: # directory rename @@ -215,9 +209,7 @@ for f, n in m2.iteritems(): if partial and not partial(f): continue - if f in m1: - continue - if f in copied: + if f in m1 or f in copied: # files already visited continue if f in copy: f2 = copy[f]