mirror of
https://github.com/facebook/sapling.git
synced 2024-10-07 23:38:50 +03:00
rebase: improve base revset performance
The old revset had pretty terrible performance on large repositories (12+ seconds). This new revset achieves the same result in only 0.7s. As we improve the underlying revset APIs we can probably get this revset down to 'only(base, dest)::', but at the moment that version still takes 2s.
This commit is contained in:
parent
365c7718eb
commit
aea70fa3a4
@ -273,9 +273,9 @@ def rebase(ui, repo, **opts):
|
|||||||
ui.status(_('empty "base" revision set - '
|
ui.status(_('empty "base" revision set - '
|
||||||
"can't compute rebase set\n"))
|
"can't compute rebase set\n"))
|
||||||
return 1
|
return 1
|
||||||
rebaseset = repo.revs(
|
commonanc = repo.revs('ancestor(%ld, %d)', base, dest).first()
|
||||||
'(children(ancestor(%ld, %d)) and ::(%ld))::',
|
rebaseset = repo.revs('(%d::(%ld) - %d)::',
|
||||||
base, dest, base)
|
commonanc, base, commonanc)
|
||||||
if not rebaseset:
|
if not rebaseset:
|
||||||
# transform to list because smartsets are not comparable to
|
# transform to list because smartsets are not comparable to
|
||||||
# lists. This should be improved to honor lazyness of
|
# lists. This should be improved to honor lazyness of
|
||||||
|
Loading…
Reference in New Issue
Block a user