comparison mercurial/merge.py @ 2917:dd032b0f02ac

merge: move forgets to the apply stage
author Matt Mackall <mpm@selenic.com>
date Tue, 15 Aug 2006 18:30:21 -0500
parents 834e147842d7
children db397c38005d
comparison
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")),