mercurial/merge.py
changeset 6242 a375ffc2aa1b
parent 6211 f89fd07fc51d
child 6256 69c75d063c7a
equal deleted inserted replaced
6241:a718e66836e8 6242:a375ffc2aa1b
    27         if fold in folded:
    27         if fold in folded:
    28             raise util.Abort(_("case-folding collision between %s and %s")
    28             raise util.Abort(_("case-folding collision between %s and %s")
    29                              % (fn, folded[fold]))
    29                              % (fn, folded[fold]))
    30         folded[fold] = fn
    30         folded[fold] = fn
    31 
    31 
    32 def forgetremoved(wctx, mctx):
    32 def forgetremoved(wctx, mctx, branchmerge):
    33     """
    33     """
    34     Forget removed files
    34     Forget removed files
    35 
    35 
    36     If we're jumping between revisions (as opposed to merging), and if
    36     If we're jumping between revisions (as opposed to merging), and if
    37     neither the working directory nor the target rev has the file,
    37     neither the working directory nor the target rev has the file,
    38     then we need to remove it from the dirstate, to prevent the
    38     then we need to remove it from the dirstate, to prevent the
    39     dirstate from listing the file when it is no longer in the
    39     dirstate from listing the file when it is no longer in the
    40     manifest.
    40     manifest.
       
    41 
       
    42     If we're merging, and the other revision has removed a file
       
    43     that is not present in the working directory, we need to mark it
       
    44     as removed.
    41     """
    45     """
    42 
    46 
    43     action = []
    47     action = []
    44     man = mctx.manifest()
    48     man = mctx.manifest()
    45     for f in wctx.deleted() + wctx.removed():
    49     state = branchmerge and 'r' or 'f'
       
    50     for f in wctx.deleted():
    46         if f not in man:
    51         if f not in man:
    47             action.append((f, "f"))
    52             action.append((f, state))
       
    53 
       
    54     if not branchmerge:
       
    55         for f in wctx.removed():
       
    56             if f not in man:
       
    57                 action.append((f, "f"))
    48 
    58 
    49     return action
    59     return action
    50 
    60 
    51 def findcopies(repo, m1, m2, ma, limit):
    61 def findcopies(repo, m1, m2, ma, limit):
    52     """
    62     """
   606         action = []
   616         action = []
   607         if not force:
   617         if not force:
   608             checkunknown(wc, p2)
   618             checkunknown(wc, p2)
   609         if not util.checkfolding(repo.path):
   619         if not util.checkfolding(repo.path):
   610             checkcollision(p2)
   620             checkcollision(p2)
   611         if not branchmerge:
   621         action += forgetremoved(wc, p2, branchmerge)
   612             action += forgetremoved(wc, p2)
       
   613         action += manifestmerge(repo, wc, p2, pa, overwrite, partial)
   622         action += manifestmerge(repo, wc, p2, pa, overwrite, partial)
   614 
   623 
   615         ### apply phase
   624         ### apply phase
   616         if not branchmerge: # just jump to the new rev
   625         if not branchmerge: # just jump to the new rev
   617             fp1, fp2, xp1, xp2 = fp2, nullid, xp2, ''
   626             fp1, fp2, xp1, xp2 = fp2, nullid, xp2, ''