# HG changeset patch # User Siddharth Agarwal # Date 2016-01-13 02:17:07 # Node ID 3951f132958f9c3c326a5443f0c7a2d228c4ac59 # Parent da5634e1b8a375fdc6f73e1364c87cd5e7881152 merge: determine what untracked conflicts cause warns and aborts separately This is written in a somewhat weird style, but it's designed for code reuse in an upcoming patch. diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -583,6 +583,14 @@ def _checkunknownfiles(repo, wctx, mctx, """ conflicts = set() if not force: + abortconflicts = set() + warnconflicts = set() + def collectconflicts(conflicts, config): + if config == 'abort': + abortconflicts.update(conflicts) + elif config == 'warn': + warnconflicts.update(conflicts) + config = _getcheckunknownconfig(repo, 'merge', 'checkunknown') for f, (m, args, msg) in actions.iteritems(): if m in ('c', 'dc'): @@ -592,15 +600,15 @@ def _checkunknownfiles(repo, wctx, mctx, if _checkunknownfile(repo, wctx, mctx, f, args[0]): conflicts.add(f) - if config == 'abort': - for f in sorted(conflicts): - repo.ui.warn(_("%s: untracked file differs\n") % f) - if conflicts: - raise error.Abort(_("untracked files in working directory " - "differ from files in requested revision")) - elif config == 'warn': - for f in sorted(conflicts): - repo.ui.warn(_("%s: replacing untracked file\n") % f) + collectconflicts(conflicts, config) + for f in sorted(abortconflicts): + repo.ui.warn(_("%s: untracked file differs\n") % f) + if abortconflicts: + raise error.Abort(_("untracked files in working directory " + "differ from files in requested revision")) + + for f in sorted(warnconflicts): + repo.ui.warn(_("%s: replacing untracked file\n") % f) for f, (m, args, msg) in actions.iteritems(): backup = f in conflicts