--- a/mercurial/fileset.py Sat Jan 24 19:41:56 2015 +0900
+++ b/mercurial/fileset.py Fri Mar 03 12:44:56 2017 +0100
@@ -15,6 +15,7 @@
merge,
parser,
registrar,
+ scmutil,
util,
)
@@ -438,6 +439,30 @@
s.append(f)
return s
+@predicate('revs(revs, pattern)')
+def revs(mctx, x):
+ """``revs(set, revspec)``
+
+ Evaluate set in the specified revisions. If the revset match multiple revs,
+ this will return file matching pattern in any of the revision.
+ """
+ # i18n: "revs" is a keyword
+ r, x = getargs(x, 2, 2, _("revs takes two arguments"))
+ # i18n: "revs" is a keyword
+ revspec = getstring(r, _("first argument to revs must be a revision"))
+ repo = mctx.ctx.repo()
+ revs = scmutil.revrange(repo, [revspec])
+
+ found = set()
+ result = []
+ for r in revs:
+ ctx = repo[r]
+ for f in getset(mctx.switch(ctx, _buildstatus(ctx, x)), x):
+ if f not in found:
+ found.add(f)
+ result.append(f)
+ return result
+
@predicate('subrepo([pattern])')
def subrepo(mctx, x):
"""Subrepositories whose paths match the given pattern.
@@ -512,6 +537,7 @@
# filesets using matchctx.switch()
_switchcallers = [
+ 'revs',
]
def _intree(funcs, tree):