mercurial/merge.py
changeset 8752 f177bdab261b
parent 8751 e8d80e0835c7
child 8753 af5f099d932b
equal deleted inserted replaced
8751:e8d80e0835c7 8752:f177bdab261b
   172     for f, n in m1.iteritems():
   172     for f, n in m1.iteritems():
   173         if partial and not partial(f):
   173         if partial and not partial(f):
   174             continue
   174             continue
   175         if f in m2:
   175         if f in m2:
   176             rflags = fmerge(f, f, f)
   176             rflags = fmerge(f, f, f)
   177             # are files different?
   177             a = ma.get(f, nullid)
   178             if n != m2[f]:
   178             if n == m2[f] or m2[f] == a: # same or local newer
   179                 a = ma.get(f, nullid)
   179                 if m1.flags(f) != rflags:
   180                 # is remote's version newer?
   180                     act("update permissions", "e", f, rflags)
   181                 if m2[f] != a:
   181             elif n == a: # remote newer
   182                     # are both different from the ancestor?
   182                 act("remote is newer", "g", f, rflags)
   183                     if n != a:
   183             else: # both changed
   184                         act("versions differ", "m", f, f, f, rflags, False)
   184                 act("versions differ", "m", f, f, f, rflags, False)
   185                     else:
   185         elif f in copied: # files we'll deal with on m2 side
   186                         act("remote is newer", "g", f, rflags)
   186             pass
   187                     continue
       
   188             # contents don't need updating, check mode bits
       
   189             if m1.flags(f) != rflags:
       
   190                 act("update permissions", "e", f, rflags)
       
   191         elif f in copied:
       
   192             continue
       
   193         elif f in copy:
   187         elif f in copy:
   194             f2 = copy[f]
   188             f2 = copy[f]
   195             if f2 not in m2: # directory rename
   189             if f2 not in m2: # directory rename
   196                 act("remote renamed directory to " + f2, "d",
   190                 act("remote renamed directory to " + f2, "d",
   197                     f, None, f2, m1.flags(f))
   191                     f, None, f2, m1.flags(f))
   213                 act("other deleted", "r", f)
   207                 act("other deleted", "r", f)
   214 
   208 
   215     for f, n in m2.iteritems():
   209     for f, n in m2.iteritems():
   216         if partial and not partial(f):
   210         if partial and not partial(f):
   217             continue
   211             continue
   218         if f in m1:
   212         if f in m1 or f in copied: # files already visited
   219             continue
       
   220         if f in copied:
       
   221             continue
   213             continue
   222         if f in copy:
   214         if f in copy:
   223             f2 = copy[f]
   215             f2 = copy[f]
   224             if f2 not in m1: # directory rename
   216             if f2 not in m1: # directory rename
   225                 act("local renamed directory to " + f2, "d",
   217                 act("local renamed directory to " + f2, "d",