mercurial/merge.py
changeset 3257 c93ce7f10f85
parent 3255 f05c182430a0
child 3280 ae85272b59a4
equal deleted inserted replaced
3256:7c114915fbdb 3257:c93ce7f10f85
   149 
   149 
   150     def checkpair(c, f2, man):
   150     def checkpair(c, f2, man):
   151         ''' check if an apparent pair actually matches '''
   151         ''' check if an apparent pair actually matches '''
   152         c2 = ctx(f2, man[f2])
   152         c2 = ctx(f2, man[f2])
   153         ca = c.ancestor(c2)
   153         ca = c.ancestor(c2)
   154         if ca:
   154         if ca and ca.path() == c.path() or ca.path() == c2.path():
   155             copy[c.path()] = f2
   155             copy[c.path()] = f2
   156             copy[f2] = c.path()
   156             copy[f2] = c.path()
   157 
   157 
   158     for f in u1:
   158     for f in u1:
   159         c = ctx(dcopies.get(f, f), m1[f])
   159         c = ctx(dcopies.get(f, f), m1[f])
   282                 if inst.errno != errno.ENOENT:
   282                 if inst.errno != errno.ENOENT:
   283                     repo.ui.warn(_("update failed to remove %s: %s!\n") %
   283                     repo.ui.warn(_("update failed to remove %s: %s!\n") %
   284                                  (f, inst.strerror))
   284                                  (f, inst.strerror))
   285             removed +=1
   285             removed +=1
   286         elif m == "c": # copy
   286         elif m == "c": # copy
   287             f2, fd, my, other, flag, remove = a[2:]
   287             f2, fd, my, other, flag, move = a[2:]
   288             if filemerge(repo, f, f2, fd, my, other, xp1, xp2, remove):
   288             if filemerge(repo, f, f2, fd, my, other, xp1, xp2, move):
   289                 unresolved += 1
   289                 unresolved += 1
   290             util.set_exec(repo.wjoin(fd), flag)
   290             util.set_exec(repo.wjoin(fd), flag)
   291             merged += 1
   291             merged += 1
   292         elif m == "m": # merge
   292         elif m == "m": # merge
   293             flag, my, other = a[2:]
   293             flag, my, other = a[2:]
   337                 # merge will appear as a normal local file
   337                 # merge will appear as a normal local file
   338                 # modification.
   338                 # modification.
   339                 fl = repo.file(f)
   339                 fl = repo.file(f)
   340                 f_len = fl.size(fl.rev(other))
   340                 f_len = fl.size(fl.rev(other))
   341                 repo.dirstate.update([f], 'n', st_size=f_len, st_mtime=-1)
   341                 repo.dirstate.update([f], 'n', st_size=f_len, st_mtime=-1)
       
   342         elif m == "c": # copy
       
   343             f2, fd, my, other, flag, move = a[2:]
       
   344             if branchmerge:
       
   345                 # We've done a branch merge, mark this file as merged
       
   346                 # so that we properly record the merger later
       
   347                 repo.dirstate.update([fd], 'm')
       
   348             else:
       
   349                 # We've update-merged a locally modified file, so
       
   350                 # we set the dirstate to emulate a normal checkout
       
   351                 # of that file some time in the past. Thus our
       
   352                 # merge will appear as a normal local file
       
   353                 # modification.
       
   354                 fl = repo.file(f)
       
   355                 f_len = fl.size(fl.rev(other))
       
   356                 repo.dirstate.update([fd], 'n', st_size=f_len, st_mtime=-1)
       
   357             if move:
       
   358                 repo.dirstate.update([f], 'r')
       
   359             if f != fd:
       
   360                 repo.dirstate.copy(f, fd)
   342 
   361 
   343 def update(repo, node, branchmerge=False, force=False, partial=None,
   362 def update(repo, node, branchmerge=False, force=False, partial=None,
   344            wlock=None, show_stats=True, remind=True):
   363            wlock=None, show_stats=True, remind=True):
   345 
   364 
   346     overwrite = force and not branchmerge
   365     overwrite = force and not branchmerge