comparison mercurial/merge.py @ 28018:3feadb0b6c34

merge: move abort/warn checks up to the top level of _checkunknownfiles In upcoming patches, we're also going to do these checks when force is True.
author Siddharth Agarwal <sid0@fb.com>
date Mon, 01 Feb 2016 20:28:32 -0800
parents 8abd9f785030
children e81d11794036
comparison
equal deleted inserted replaced
28017:d3f1b7ee5e70 28018:3feadb0b6c34
608 Considers any actions that care about the presence of conflicting unknown 608 Considers any actions that care about the presence of conflicting unknown
609 files. For some actions, the result is to abort; for others, it is to 609 files. For some actions, the result is to abort; for others, it is to
610 choose a different action. 610 choose a different action.
611 """ 611 """
612 conflicts = set() 612 conflicts = set()
613 warnconflicts = set()
614 abortconflicts = set()
615 unknownconfig = _getcheckunknownconfig(repo, 'merge', 'checkunknown')
616 ignoredconfig = _getcheckunknownconfig(repo, 'merge', 'checkignored')
613 if not force: 617 if not force:
614 abortconflicts = set()
615 warnconflicts = set()
616 def collectconflicts(conflicts, config): 618 def collectconflicts(conflicts, config):
617 if config == 'abort': 619 if config == 'abort':
618 abortconflicts.update(conflicts) 620 abortconflicts.update(conflicts)
619 elif config == 'warn': 621 elif config == 'warn':
620 warnconflicts.update(conflicts) 622 warnconflicts.update(conflicts)
621 623
622 unknownconfig = _getcheckunknownconfig(repo, 'merge', 'checkunknown')
623 ignoredconfig = _getcheckunknownconfig(repo, 'merge', 'checkignored')
624 for f, (m, args, msg) in actions.iteritems(): 624 for f, (m, args, msg) in actions.iteritems():
625 if m in ('c', 'dc'): 625 if m in ('c', 'dc'):
626 if _checkunknownfile(repo, wctx, mctx, f): 626 if _checkunknownfile(repo, wctx, mctx, f):
627 conflicts.add(f) 627 conflicts.add(f)
628 elif m == 'dg': 628 elif m == 'dg':
632 ignoredconflicts = set([c for c in conflicts 632 ignoredconflicts = set([c for c in conflicts
633 if repo.dirstate._ignore(c)]) 633 if repo.dirstate._ignore(c)])
634 unknownconflicts = conflicts - ignoredconflicts 634 unknownconflicts = conflicts - ignoredconflicts
635 collectconflicts(ignoredconflicts, ignoredconfig) 635 collectconflicts(ignoredconflicts, ignoredconfig)
636 collectconflicts(unknownconflicts, unknownconfig) 636 collectconflicts(unknownconflicts, unknownconfig)
637 for f in sorted(abortconflicts): 637
638 repo.ui.warn(_("%s: untracked file differs\n") % f) 638 for f in sorted(abortconflicts):
639 if abortconflicts: 639 repo.ui.warn(_("%s: untracked file differs\n") % f)
640 raise error.Abort(_("untracked files in working directory " 640 if abortconflicts:
641 "differ from files in requested revision")) 641 raise error.Abort(_("untracked files in working directory "
642 642 "differ from files in requested revision"))
643 for f in sorted(warnconflicts): 643
644 repo.ui.warn(_("%s: replacing untracked file\n") % f) 644 for f in sorted(warnconflicts):
645 repo.ui.warn(_("%s: replacing untracked file\n") % f)
645 646
646 for f, (m, args, msg) in actions.iteritems(): 647 for f, (m, args, msg) in actions.iteritems():
647 backup = f in conflicts 648 backup = f in conflicts
648 if m == 'c': 649 if m == 'c':
649 flags, = args 650 flags, = args