Mercurial > public > mercurial-scm > hg
comparison mercurial/merge.py @ 2897: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
2896:834e147842d7 | 2897: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")), |