Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/merge.py @ 2919:8743188f4d2e
merge: consolidate dirstate updates
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Tue, 15 Aug 2006 23:17:06 -0500 |
parents | db397c38005d |
children | 545d33aa3f82 |
comparison
equal
deleted
inserted
replaced
2918:db397c38005d | 2919:8743188f4d2e |
---|---|
252 continue | 252 continue |
253 repo.ui.note(_("getting %s\n") % f) | 253 repo.ui.note(_("getting %s\n") % f) |
254 t = repo.file(f).read(node) | 254 t = repo.file(f).read(node) |
255 repo.wwrite(f, t) | 255 repo.wwrite(f, t) |
256 util.set_exec(repo.wjoin(f), flag) | 256 util.set_exec(repo.wjoin(f), flag) |
257 if not partial: | |
258 if branchmerge: | |
259 repo.dirstate.update([f], 'n', st_mtime=-1) | |
260 else: | |
261 repo.dirstate.update([f], 'n') | |
262 | 257 |
263 # merge the tricky bits | 258 # merge the tricky bits |
264 unresolved = [] | 259 unresolved = [] |
265 files = merge.keys() | 260 files = merge.keys() |
266 files.sort() | 261 files.sort() |
269 flag, my, other = merge[f] | 264 flag, my, other = merge[f] |
270 ret = merge3(repo, f, my, other, xp1, xp2) | 265 ret = merge3(repo, f, my, other, xp1, xp2) |
271 if ret: | 266 if ret: |
272 unresolved.append(f) | 267 unresolved.append(f) |
273 util.set_exec(repo.wjoin(f), flag) | 268 util.set_exec(repo.wjoin(f), flag) |
274 if not partial: | |
275 if branchmerge: | |
276 # We've done a branch merge, mark this file as merged | |
277 # so that we properly record the merger later | |
278 repo.dirstate.update([f], 'm') | |
279 else: | |
280 # We've update-merged a locally modified file, so | |
281 # we set the dirstate to emulate a normal checkout | |
282 # of that file some time in the past. Thus our | |
283 # merge will appear as a normal local file | |
284 # modification. | |
285 fl = repo.file(f) | |
286 f_len = fl.size(fl.rev(other)) | |
287 repo.dirstate.update([f], 'n', st_size=f_len, st_mtime=-1) | |
288 | 269 |
289 remove.sort() | 270 remove.sort() |
290 for f in remove: | 271 for f in remove: |
291 repo.ui.note(_("removing %s\n") % f) | 272 repo.ui.note(_("removing %s\n") % f) |
292 util.audit_path(f) | 273 util.audit_path(f) |
294 util.unlink(repo.wjoin(f)) | 275 util.unlink(repo.wjoin(f)) |
295 except OSError, inst: | 276 except OSError, inst: |
296 if inst.errno != errno.ENOENT: | 277 if inst.errno != errno.ENOENT: |
297 repo.ui.warn(_("update failed to remove %s: %s!\n") % | 278 repo.ui.warn(_("update failed to remove %s: %s!\n") % |
298 (f, inst.strerror)) | 279 (f, inst.strerror)) |
280 | |
281 # update dirstate | |
299 if not partial: | 282 if not partial: |
283 repo.dirstate.setparents(p1, p2) | |
284 repo.dirstate.forget(forget) | |
300 if branchmerge: | 285 if branchmerge: |
301 repo.dirstate.update(remove, 'r') | 286 repo.dirstate.update(remove, 'r') |
302 else: | 287 else: |
303 repo.dirstate.forget(remove) | 288 repo.dirstate.forget(remove) |
304 | 289 |
305 if not partial: | 290 files = get.keys() |
306 repo.dirstate.setparents(p1, p2) | 291 files.sort() |
307 repo.dirstate.forget(forget) | 292 for f in files: |
293 if branchmerge: | |
294 repo.dirstate.update([f], 'n', st_mtime=-1) | |
295 else: | |
296 repo.dirstate.update([f], 'n') | |
297 | |
298 files = merge.keys() | |
299 files.sort() | |
300 for f in files: | |
301 if branchmerge: | |
302 # We've done a branch merge, mark this file as merged | |
303 # so that we properly record the merger later | |
304 repo.dirstate.update([f], 'm') | |
305 else: | |
306 # We've update-merged a locally modified file, so | |
307 # we set the dirstate to emulate a normal checkout | |
308 # of that file some time in the past. Thus our | |
309 # merge will appear as a normal local file | |
310 # modification. | |
311 fl = repo.file(f) | |
312 f_len = fl.size(fl.rev(other)) | |
313 repo.dirstate.update([f], 'n', st_size=f_len, st_mtime=-1) | |
308 | 314 |
309 if show_stats: | 315 if show_stats: |
310 stats = ((len(get), _("updated")), | 316 stats = ((len(get), _("updated")), |
311 (len(merge) - len(unresolved), _("merged")), | 317 (len(merge) - len(unresolved), _("merged")), |
312 (len(remove), _("removed")), | 318 (len(remove), _("removed")), |