Mercurial > hg
changeset 34547:81aebcc73beb
merge: add merge action 'p' to record path conflicts during update
Add a new merge action to record path conflicts. A status message is
printed, and the path conflict is added to the merge state.
Differential Revision: https://phab.mercurial-scm.org/D776
author | Mark Thomas <mbthomas@fb.com> |
---|---|
date | Mon, 02 Oct 2017 14:05:30 -0700 |
parents | e4cf957bf7ce |
children | b4955650eb57 |
files | mercurial/merge.py mercurial/sparse.py |
diffstat | 2 files changed, 21 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/merge.py Mon Oct 02 14:05:30 2017 -0700 +++ b/mercurial/merge.py Mon Oct 02 14:05:30 2017 -0700 @@ -1243,12 +1243,27 @@ wctx[f].remove() numupdates = sum(len(l) for m, l in actions.items() if m != 'k') + z = 0 if [a for a in actions['r'] if a[0] == '.hgsubstate']: subrepo.submerge(repo, wctx, mctx, wctx, overwrite, labels) - # remove in parallel (must come first) - z = 0 + # record path conflicts + for f, args, msg in actions['p']: + f1, fo = args + s = repo.ui.status + s(_("%s: path conflict - a file or link has the same name as a " + "directory\n") % f) + if fo == 'l': + s(_("the local file has been renamed to %s\n") % f1) + else: + s(_("the remote file has been renamed to %s\n") % f1) + s(_("resolve manually then use 'hg resolve --mark %s'\n") % f) + ms.addpath(f, f1, fo) + z += 1 + progress(_updating, z, item=f, total=numupdates, unit=_files) + + # remove in parallel (must come before getting) prog = worker.worker(repo.ui, 0.001, batchremove, (repo, wctx), actions['r']) for i, item in prog: @@ -1698,7 +1713,8 @@ del actionbyfile[f] # Convert to dictionary-of-lists format - actions = dict((m, []) for m in 'a am f g cd dc r dm dg m e k'.split()) + actions = dict((m, []) + for m in 'a am f g cd dc r dm dg m e k p'.split()) for f, (m, args, msg) in actionbyfile.iteritems(): if m not in actions: actions[m] = []
--- a/mercurial/sparse.py Mon Oct 02 14:05:30 2017 -0700 +++ b/mercurial/sparse.py Mon Oct 02 14:05:30 2017 -0700 @@ -486,7 +486,8 @@ dropped.append(file) # Apply changes to disk - typeactions = dict((m, []) for m in 'a f g am cd dc r dm dg m e k'.split()) + typeactions = dict((m, []) + for m in 'a f g am cd dc r dm dg m e k p'.split()) for f, (m, args, msg) in actions.iteritems(): if m not in typeactions: typeactions[m] = []