mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 00:14:35 +03:00
revset: added lazyset implementation to matching revset
Performance Benchmarking: $ time hg log -qr "first(matching(0))" 0:3a6a38229d41 real 0m2.213s user 0m2.149s sys 0m0.055s $ time ./hg log -qr "first(matching(0))" 0:3a6a38229d41 real 0m0.177s user 0m0.137s sys 0m0.038s
This commit is contained in:
parent
2f1f581a8c
commit
c27606d6ba
@ -1365,18 +1365,18 @@ def matching(repo, subset, x):
|
||||
# is only one field to match)
|
||||
getinfo = lambda r: [f(r) for f in getfieldfuncs]
|
||||
|
||||
matches = set()
|
||||
for rev in revs:
|
||||
target = getinfo(rev)
|
||||
for r in subset:
|
||||
def matches(x):
|
||||
for rev in revs:
|
||||
target = getinfo(rev)
|
||||
match = True
|
||||
for n, f in enumerate(getfieldfuncs):
|
||||
if target[n] != f(r):
|
||||
if target[n] != f(x):
|
||||
match = False
|
||||
break
|
||||
if match:
|
||||
matches.add(r)
|
||||
return baseset([r for r in subset if r in matches])
|
||||
return True
|
||||
return False
|
||||
|
||||
return lazyset(subset, matches)
|
||||
|
||||
def reverse(repo, subset, x):
|
||||
"""``reverse(set)``
|
||||
|
Loading…
Reference in New Issue
Block a user