Mercurial > public > mercurial-scm > hg
diff mercurial/merge.py @ 27742:6b639caa1652
merge: split up checks for unknown and ignored files that differ
In some real-world cases it is preferable to allow overwriting ignored files
while continuing to abort on unknown files. This primarily happens when we're
replacing build artifacts (which are ignored) with checked in files, but
continuing to abort on differing files that aren't ignored.
We're redefining merge.checkunknown to only control the behavior for files
that aren't ignored. That's fine because this config was only very recently
introduced and has not made its way into any Mercurial releases yet.
author | Siddharth Agarwal <sid0@fb.com> |
---|---|
date | Tue, 12 Jan 2016 18:38:49 -0800 |
parents | 3951f132958f |
children | a33c1c9e769c |
line wrap: on
line diff
--- a/mercurial/merge.py Tue Jan 12 18:17:07 2016 -0800 +++ b/mercurial/merge.py Tue Jan 12 18:38:49 2016 -0800 @@ -591,7 +591,8 @@ elif config == 'warn': warnconflicts.update(conflicts) - config = _getcheckunknownconfig(repo, 'merge', 'checkunknown') + unknownconfig = _getcheckunknownconfig(repo, 'merge', 'checkunknown') + ignoredconfig = _getcheckunknownconfig(repo, 'merge', 'checkignored') for f, (m, args, msg) in actions.iteritems(): if m in ('c', 'dc'): if _checkunknownfile(repo, wctx, mctx, f): @@ -600,7 +601,11 @@ if _checkunknownfile(repo, wctx, mctx, f, args[0]): conflicts.add(f) - collectconflicts(conflicts, config) + ignoredconflicts = set([c for c in conflicts + if repo.dirstate._ignore(c)]) + unknownconflicts = conflicts - ignoredconflicts + collectconflicts(ignoredconflicts, ignoredconfig) + collectconflicts(unknownconflicts, unknownconfig) for f in sorted(abortconflicts): repo.ui.warn(_("%s: untracked file differs\n") % f) if abortconflicts: