910 def _makenofollowfilematcher(repo, pats, opts): |
910 def _makenofollowfilematcher(repo, pats, opts): |
911 '''hook for extensions to override the filematcher for non-follow cases''' |
911 '''hook for extensions to override the filematcher for non-follow cases''' |
912 return None |
912 return None |
913 |
913 |
914 |
914 |
|
915 def revrange(repo, specs, localalias=None): |
|
916 """Resolves user-provided revset(s). |
|
917 |
|
918 This just wraps the lower-level scmutil.revrange() in order to raise an |
|
919 exception indicating user error. |
|
920 """ |
|
921 try: |
|
922 return scmutil.revrange(repo, specs, localalias) |
|
923 except error.RepoLookupError as e: |
|
924 raise error.InputError(e.args[0], hint=e.hint) |
|
925 |
|
926 |
915 _opt2logrevset = { |
927 _opt2logrevset = { |
916 b'no_merges': (b'not merge()', None), |
928 b'no_merges': (b'not merge()', None), |
917 b'only_merges': (b'merge()', None), |
929 b'only_merges': (b'merge()', None), |
918 b'_matchfiles': (None, b'_matchfiles(%ps)'), |
930 b'_matchfiles': (None, b'_matchfiles(%ps)'), |
919 b'date': (b'date(%s)', None), |
931 b'date': (b'date(%s)', None), |
985 |
997 |
986 |
998 |
987 def _initialrevs(repo, wopts): |
999 def _initialrevs(repo, wopts): |
988 """Return the initial set of revisions to be filtered or followed""" |
1000 """Return the initial set of revisions to be filtered or followed""" |
989 if wopts.revspec: |
1001 if wopts.revspec: |
990 revs = scmutil.revrange(repo, wopts.revspec) |
1002 revs = revrange(repo, wopts.revspec) |
991 elif wopts.follow and repo.dirstate.p1() == repo.nullid: |
1003 elif wopts.follow and repo.dirstate.p1() == repo.nullid: |
992 revs = smartset.baseset() |
1004 revs = smartset.baseset() |
993 elif wopts.follow: |
1005 elif wopts.follow: |
994 revs = repo.revs(b'.') |
1006 revs = repo.revs(b'.') |
995 else: |
1007 else: |