comparison contrib/perf-utils/subsetmaker.py @ 46772:63a3941d9847

perf-util: add an helper revset to use the same spec as the case search script This make result of the searcher script easier to use. Differential Revision: https://phab.mercurial-scm.org/D10228
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 16 Mar 2021 12:52:23 +0100
parents 36b4640ccb6a
children 186223795e4a
comparison
equal deleted inserted replaced
46771:6b26e6432554 46772:63a3941d9847
14 revsetlang, 14 revsetlang,
15 smartset, 15 smartset,
16 ) 16 )
17 17
18 revsetpredicate = registrar.revsetpredicate() 18 revsetpredicate = registrar.revsetpredicate()
19
20
21 @revsetpredicate(b'subsetspec("<spec>")')
22 def subsetmarkerspec(repo, subset, x):
23 """use a shorthand spec as used by search-discovery-case
24
25 Supported format are:
26
27 - "scratch-count-seed": not scratch(all(), count, "seed")
28 - "randomantichain-seed": ::randomantichain(all(), "seed")
29 - "rev-REV": "::REV"
30 """
31 args = revsetlang.getargs(
32 x, 0, 1, _(b'subsetspec("spec") required an argument')
33 )
34
35 spec = revsetlang.getstring(args[0], _(b"spec should be a string"))
36 case = spec.split(b'-')
37 t = case[0]
38 if t == b'scratch':
39 spec_revset = b'not scratch(all(), %s, "%s")' % (case[1], case[2])
40 elif t == b'randomantichain':
41 spec_revset = b'::randomantichain(all(), "%s")' % case[1]
42 elif t == b'rev':
43 spec_revset = b'::%d' % case[1]
44 else:
45 assert False, spec
46
47 selected = repo.revs(spec_revset)
48
49 return selected & subset
19 50
20 51
21 @revsetpredicate(b'scratch(REVS, <count>, [seed])') 52 @revsetpredicate(b'scratch(REVS, <count>, [seed])')
22 def scratch(repo, subset, x): 53 def scratch(repo, subset, x):
23 """randomly remove <count> revision from the repository top 54 """randomly remove <count> revision from the repository top