Mercurial > hg
changeset 2899:8743188f4d2e
merge: consolidate dirstate updates
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Tue, 15 Aug 2006 23:17:06 -0500 |
parents | db397c38005d |
children | ef8ee4477019 addb58e3b41c ee6ed2b29e1a |
files | mercurial/merge.py |
diffstat | 1 files changed, 32 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/merge.py Tue Aug 15 22:46:35 2006 -0500 +++ b/mercurial/merge.py Tue Aug 15 23:17:06 2006 -0500 @@ -254,11 +254,6 @@ t = repo.file(f).read(node) repo.wwrite(f, t) util.set_exec(repo.wjoin(f), flag) - if not partial: - if branchmerge: - repo.dirstate.update([f], 'n', st_mtime=-1) - else: - repo.dirstate.update([f], 'n') # merge the tricky bits unresolved = [] @@ -271,7 +266,38 @@ if ret: unresolved.append(f) util.set_exec(repo.wjoin(f), flag) - if not partial: + + remove.sort() + for f in remove: + repo.ui.note(_("removing %s\n") % f) + util.audit_path(f) + try: + util.unlink(repo.wjoin(f)) + except OSError, inst: + if inst.errno != errno.ENOENT: + repo.ui.warn(_("update failed to remove %s: %s!\n") % + (f, inst.strerror)) + + # update dirstate + if not partial: + repo.dirstate.setparents(p1, p2) + repo.dirstate.forget(forget) + if branchmerge: + repo.dirstate.update(remove, 'r') + else: + repo.dirstate.forget(remove) + + files = get.keys() + files.sort() + for f in files: + if branchmerge: + repo.dirstate.update([f], 'n', st_mtime=-1) + else: + repo.dirstate.update([f], 'n') + + files = merge.keys() + files.sort() + for f in files: if branchmerge: # We've done a branch merge, mark this file as merged # so that we properly record the merger later @@ -286,26 +312,6 @@ f_len = fl.size(fl.rev(other)) repo.dirstate.update([f], 'n', st_size=f_len, st_mtime=-1) - remove.sort() - for f in remove: - repo.ui.note(_("removing %s\n") % f) - util.audit_path(f) - try: - util.unlink(repo.wjoin(f)) - except OSError, inst: - if inst.errno != errno.ENOENT: - repo.ui.warn(_("update failed to remove %s: %s!\n") % - (f, inst.strerror)) - if not partial: - if branchmerge: - repo.dirstate.update(remove, 'r') - else: - repo.dirstate.forget(remove) - - if not partial: - repo.dirstate.setparents(p1, p2) - repo.dirstate.forget(forget) - if show_stats: stats = ((len(get), _("updated")), (len(merge) - len(unresolved), _("merged")),