Mercurial > public > mercurial-scm > hg
comparison mercurial/merge.py @ 35288:5db3c748ce8f
merge: don't check for unknown files in IMM
Differential Revision: https://phab.mercurial-scm.org/D1214
author | Phil Cohen <phillco@fb.com> |
---|---|
date | Thu, 07 Dec 2017 13:20:47 -0800 |
parents | 1b03407e808d |
children | 87918218da70 |
comparison
equal
deleted
inserted
replaced
35287:3398603c5621 | 35288:5db3c748ce8f |
---|---|
644 "('%s' is none of %s)") | 644 "('%s' is none of %s)") |
645 % (section, name, config, validstr)) | 645 % (section, name, config, validstr)) |
646 return config | 646 return config |
647 | 647 |
648 def _checkunknownfile(repo, wctx, mctx, f, f2=None): | 648 def _checkunknownfile(repo, wctx, mctx, f, f2=None): |
649 if wctx.isinmemory(): | |
650 # Nothing to do in IMM because nothing in the "working copy" can be an | |
651 # unknown file. | |
652 # | |
653 # Note that we should bail out here, not in ``_checkunknownfiles()``, | |
654 # because that function does other useful work. | |
655 return False | |
656 | |
649 if f2 is None: | 657 if f2 is None: |
650 f2 = f | 658 f2 = f |
651 return (repo.wvfs.audit.check(f) | 659 return (repo.wvfs.audit.check(f) |
652 and repo.wvfs.isfileorlink(f) | 660 and repo.wvfs.isfileorlink(f) |
653 and repo.dirstate.normalize(f) not in repo.dirstate | 661 and repo.dirstate.normalize(f) not in repo.dirstate |
672 # A set of paths that are known to be absent. This prevents repeated | 680 # A set of paths that are known to be absent. This prevents repeated |
673 # checking of subdirectories that are known not to exist. It will be | 681 # checking of subdirectories that are known not to exist. It will be |
674 # updated with any new dirs that are checked and found to be absent. | 682 # updated with any new dirs that are checked and found to be absent. |
675 self._missingdircache = set() | 683 self._missingdircache = set() |
676 | 684 |
677 def __call__(self, repo, f): | 685 def __call__(self, repo, wctx, f): |
686 if wctx.isinmemory(): | |
687 # Nothing to do in IMM for the same reason as ``_checkunknownfile``. | |
688 return False | |
689 | |
678 # Check for path prefixes that exist as unknown files. | 690 # Check for path prefixes that exist as unknown files. |
679 for p in reversed(list(util.finddirs(f))): | 691 for p in reversed(list(util.finddirs(f))): |
680 if p in self._missingdircache: | 692 if p in self._missingdircache: |
681 return | 693 return |
682 if p in self._unknowndircache: | 694 if p in self._unknowndircache: |
724 for f, (m, args, msg) in actions.iteritems(): | 736 for f, (m, args, msg) in actions.iteritems(): |
725 if m in ('c', 'dc'): | 737 if m in ('c', 'dc'): |
726 if _checkunknownfile(repo, wctx, mctx, f): | 738 if _checkunknownfile(repo, wctx, mctx, f): |
727 fileconflicts.add(f) | 739 fileconflicts.add(f) |
728 elif pathconfig and f not in wctx: | 740 elif pathconfig and f not in wctx: |
729 path = checkunknowndirs(repo, f) | 741 path = checkunknowndirs(repo, wctx, f) |
730 if path is not None: | 742 if path is not None: |
731 pathconflicts.add(path) | 743 pathconflicts.add(path) |
732 elif m == 'dg': | 744 elif m == 'dg': |
733 if _checkunknownfile(repo, wctx, mctx, f, args[0]): | 745 if _checkunknownfile(repo, wctx, mctx, f, args[0]): |
734 fileconflicts.add(f) | 746 fileconflicts.add(f) |