mercurial/merge.py
changeset 3000 33dcf03ef45f
parent 2999 fa9c769fee8a
child 3001 ad558f297eb1
equal deleted inserted replaced
2999:fa9c769fee8a 3000:33dcf03ef45f
    77     linear_path = (pa == p1 or pa == p2)
    77     linear_path = (pa == p1 or pa == p2)
    78     if branchmerge and linear_path:
    78     if branchmerge and linear_path:
    79         raise util.Abort(_("there is nothing to merge, just use "
    79         raise util.Abort(_("there is nothing to merge, just use "
    80                            "'hg update' or look at 'hg heads'"))
    80                            "'hg update' or look at 'hg heads'"))
    81 
    81 
    82     if not overwrite and not linear_path and not branchmerge:
    82     if not linear_path and not (overwrite or branchmerge):
    83         raise util.Abort(_("update spans branches, use 'hg merge' "
    83         raise util.Abort(_("update spans branches, use 'hg merge' "
    84                            "or 'hg update -C' to lose changes"))
    84                            "or 'hg update -C' to lose changes"))
    85 
    85 
    86     modified, added, removed, deleted, unknown = repo.status()[:5]
    86     modified, added, removed, deleted, unknown = repo.status()[:5]
    87     if branchmerge and not forcemerge:
    87     if branchmerge and not forcemerge:
   138         # prevent the dirstate from listing the file when it is no
   138         # prevent the dirstate from listing the file when it is no
   139         # longer in the manifest.
   139         # longer in the manifest.
   140         if linear_path and f not in m2:
   140         if linear_path and f not in m2:
   141             forget.append(f)
   141             forget.append(f)
   142 
   142 
       
   143     if partial:
       
   144         for f in mw.keys():
       
   145             if not partial(f): del mw[f]
       
   146         for f in m2.keys():
       
   147             if not partial(f): del m2[f]
       
   148 
   143     # Compare manifests
   149     # Compare manifests
   144     for f, n in mw.iteritems():
   150     for f, n in mw.iteritems():
   145         if partial and not partial(f):
       
   146             continue
       
   147         if f in m2:
   151         if f in m2:
   148             queued = 0
   152             queued = 0
   149 
   153 
   150             # are files different?
   154             # are files different?
   151             if n != m2[f]:
   155             if n != m2[f]:
   203                     repo.ui.debug(_("local modified %s, keeping\n") % f)
   207                     repo.ui.debug(_("local modified %s, keeping\n") % f)
   204             else:
   208             else:
   205                 repo.ui.debug(_("working dir created %s, keeping\n") % f)
   209                 repo.ui.debug(_("working dir created %s, keeping\n") % f)
   206 
   210 
   207     for f, n in m2.iteritems():
   211     for f, n in m2.iteritems():
   208         if partial and not partial(f):
       
   209             continue
       
   210         if f[0] == "/":
   212         if f[0] == "/":
   211             continue
   213             continue
   212         if f in ma and n != ma[f]:
   214         if f in ma and n != ma[f]:
   213             r = _("k")
   215             r = _("k")
   214             if not overwrite:
   216             if not overwrite: