Show More
@@ -691,39 +691,47 b' def _makematcher(repo, revs, pats, opts)' | |||
|
691 | 691 | slowpath = match.anypats() or (not match.always() and opts.get(b'removed')) |
|
692 | 692 | if not slowpath: |
|
693 | 693 | follow = opts.get(b'follow') or opts.get(b'follow_first') |
|
694 | startctxs = [] | |
|
695 | 694 | if follow and opts.get(b'rev'): |
|
696 | 695 | startctxs = [repo[r] for r in revs] |
|
697 | for f in match.files(): | |
|
698 | if follow and startctxs: | |
|
696 | for f in match.files(): | |
|
699 | 697 | # No idea if the path was a directory at that revision, so |
|
700 | 698 | # take the slow path. |
|
701 | 699 | if any(f not in c for c in startctxs): |
|
702 | 700 | slowpath = True |
|
703 | 701 | continue |
|
704 | elif follow and f not in wctx: | |
|
705 | # If the file exists, it may be a directory, so let it | |
|
706 | # take the slow path. | |
|
707 | if os.path.exists(repo.wjoin(f)): | |
|
708 | slowpath = True | |
|
709 | continue | |
|
710 | else: | |
|
711 | raise error.Abort( | |
|
712 | _( | |
|
713 | b'cannot follow file not in parent ' | |
|
714 | b'revision: "%s"' | |
|
715 | ) | |
|
716 | % f | |
|
717 | ) | |
|
718 | filelog = repo.file(f) | |
|
719 | if not filelog: | |
|
720 | # A zero count may be a directory or deleted file, so | |
|
721 | # try to find matching entries on the slow path. | |
|
722 | if follow: | |
|
702 | filelog = repo.file(f) | |
|
703 | if not filelog: | |
|
723 | 704 | raise error.Abort( |
|
724 | 705 | _(b'cannot follow nonexistent file: "%s"') % f |
|
725 | 706 | ) |
|
726 | slowpath = True | |
|
707 | elif follow: | |
|
708 | for f in match.files(): | |
|
709 | if f not in wctx: | |
|
710 | # If the file exists, it may be a directory, so let it | |
|
711 | # take the slow path. | |
|
712 | if os.path.exists(repo.wjoin(f)): | |
|
713 | slowpath = True | |
|
714 | continue | |
|
715 | else: | |
|
716 | raise error.Abort( | |
|
717 | _( | |
|
718 | b'cannot follow file not in parent ' | |
|
719 | b'revision: "%s"' | |
|
720 | ) | |
|
721 | % f | |
|
722 | ) | |
|
723 | filelog = repo.file(f) | |
|
724 | if not filelog: | |
|
725 | raise error.Abort( | |
|
726 | _(b'cannot follow nonexistent file: "%s"') % f | |
|
727 | ) | |
|
728 | else: | |
|
729 | for f in match.files(): | |
|
730 | filelog = repo.file(f) | |
|
731 | if not filelog: | |
|
732 | # A zero count may be a directory or deleted file, so | |
|
733 | # try to find matching entries on the slow path. | |
|
734 | slowpath = True | |
|
727 | 735 | |
|
728 | 736 | # We decided to fall back to the slowpath because at least one |
|
729 | 737 | # of the paths was not a file. Check to see if at least one of them |
@@ -2308,6 +2308,20 b' follow files from wdir' | |||
|
2308 | 2308 | $ hg log -T '== {rev} ==\n' -fr'wdir()' --git --stat notfound |
|
2309 | 2309 | notfound: $ENOENT$ |
|
2310 | 2310 | |
|
2311 | follow added/removed files from wdir parent | |
|
2312 | ||
|
2313 | $ hg log -T '{rev}\n' -f d1/f2 | |
|
2314 | abort: cannot follow nonexistent file: "d1/f2" | |
|
2315 | [255] | |
|
2316 | ||
|
2317 | $ hg log -T '{rev}\n' -f f1-copy | |
|
2318 | abort: cannot follow nonexistent file: "f1-copy" | |
|
2319 | [255] | |
|
2320 | ||
|
2321 | $ hg log -T '{rev}\n' -f .d6/f1 | |
|
2322 | abort: cannot follow file not in parent revision: ".d6/f1" | |
|
2323 | [255] | |
|
2324 | ||
|
2311 | 2325 | $ hg revert -aqC |
|
2312 | 2326 | |
|
2313 | 2327 | Check that adding an arbitrary name shows up in log automatically |
General Comments 0
You need to be logged in to leave comments.
Login now