mercurial/merge.py
changeset 2917 dd032b0f02ac
parent 2916 834e147842d7
child 2918 db397c38005d
equal deleted inserted replaced
2916:834e147842d7 2917:dd032b0f02ac
   108                   (short(man), short(m1n), short(m2n)))
   108                   (short(man), short(m1n), short(m2n)))
   109 
   109 
   110     merge = {}
   110     merge = {}
   111     get = {}
   111     get = {}
   112     remove = []
   112     remove = []
       
   113     forget = []
   113 
   114 
   114     # construct a working dir manifest
   115     # construct a working dir manifest
   115     mw = m1.copy()
   116     mw = m1.copy()
   116     umap = dict.fromkeys(unknown)
   117     umap = dict.fromkeys(unknown)
   117 
   118 
   131         # If we're jumping between revisions (as opposed to merging),
   132         # If we're jumping between revisions (as opposed to merging),
   132         # and if neither the working directory nor the target rev has
   133         # and if neither the working directory nor the target rev has
   133         # the file, then we need to remove it from the dirstate, to
   134         # the file, then we need to remove it from the dirstate, to
   134         # prevent the dirstate from listing the file when it is no
   135         # prevent the dirstate from listing the file when it is no
   135         # longer in the manifest.
   136         # longer in the manifest.
   136         if not partial and linear_path and f not in m2:
   137         if linear_path and f not in m2:
   137             repo.dirstate.forget((f,))
   138             forget.append(f)
   138 
   139 
   139     # Compare manifests
   140     # Compare manifests
   140     for f, n in mw.iteritems():
   141     for f, n in mw.iteritems():
   141         if partial and not partial(f):
   142         if partial and not partial(f):
   142             continue
   143             continue
   222             else:
   223             else:
   223                 repo.ui.debug(_("local deleted %s\n") % f)
   224                 repo.ui.debug(_("local deleted %s\n") % f)
   224 
   225 
   225     del mw, m1, m2, ma
   226     del mw, m1, m2, ma
   226 
   227 
       
   228     ### apply phase
       
   229 
   227     if overwrite:
   230     if overwrite:
   228         for f in merge:
   231         for f in merge:
   229             get[f] = merge[f][:2]
   232             get[f] = merge[f][:2]
   230         merge = {}
   233         merge = {}
   231 
   234 
   298         else:
   301         else:
   299             repo.dirstate.forget(remove)
   302             repo.dirstate.forget(remove)
   300 
   303 
   301     if not partial:
   304     if not partial:
   302         repo.dirstate.setparents(p1, p2)
   305         repo.dirstate.setparents(p1, p2)
       
   306         repo.dirstate.forget(forget)
   303 
   307 
   304     if show_stats:
   308     if show_stats:
   305         stats = ((len(get), _("updated")),
   309         stats = ((len(get), _("updated")),
   306                  (len(merge) - len(unresolved), _("merged")),
   310                  (len(merge) - len(unresolved), _("merged")),
   307                  (len(remove), _("removed")),
   311                  (len(remove), _("removed")),