Mercurial > public > mercurial-scm > hg-stable
diff mercurial/revset.py @ 35309:d36eda8896cc
revset: alias follow(startrev=rev) to ancestors(rev)
This seems natural given 'log -frREV' (with no file pattern) is equivalent
to 'log -frREV *'.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Thu, 22 Sep 2016 19:40:07 +0900 |
parents | 89b5c2ae1980 |
children | d67bcfc0041f |
line wrap: on
line diff
--- a/mercurial/revset.py Thu Sep 22 19:35:36 2016 +0900 +++ b/mercurial/revset.py Thu Sep 22 19:40:07 2016 +0900 @@ -910,15 +910,16 @@ def _follow(repo, subset, x, name, followfirst=False): args = getargsdict(x, name, 'file startrev') - c = repo['.'] + revs = None + if 'startrev' in args: + revs = getset(repo, fullreposet(repo), args['startrev']) + if not revs: + raise error.RepoLookupError( + _("%s expected at least one starting revision") % name) if 'file' in args: x = getstring(args['file'], _("%s expected a pattern") % name) - revs = [None] - if 'startrev' in args: - revs = getset(repo, fullreposet(repo), args['startrev']) - if not revs: - raise error.RepoLookupError( - _("%s expected at least one starting revision") % name) + if revs is None: + revs = [None] fctxs = [] for r in revs: ctx = mctx = repo[r] @@ -929,10 +930,9 @@ fctxs.extend(ctx[f].introfilectx() for f in ctx.manifest().walk(m)) s = dagop.filerevancestors(fctxs, followfirst) else: - if 'startrev' in args: - raise error.ParseError(_("%s takes no arguments or a pattern " - "and an optional revset") % name) - s = dagop.revancestors(repo, baseset([c.rev()]), followfirst) + if revs is None: + revs = baseset([repo['.'].rev()]) + s = dagop.revancestors(repo, revs, followfirst) return subset & s