Sean Farley <sean@farley.io> [Wed, 20 Jun 2018 17:07:46 -0700] rev 38626
contrib: add heads(commonancestors(_)) to all-revsets
This is mainly to check that we don't regress our optimization path.
Sean Farley <sean@farley.io> [Tue, 26 Jun 2018 15:26:21 -0700] rev 38625
revset: add optimization for heads(commonancestors())
Previously, the only way to get these commits were (tested on
mozilla-central):
hg perfrevset 'heads(::a7cf55 and ::d8b15)'
! wall 4.988366 comb 4.960000 user 4.780000 sys 0.180000 (best of 3)
After this patch:
(python)
hg perfrevset 'heads(commonancestors(a7cf55 + d8b15))'
! wall 0.002155 comb 0.000000 user 0.000000 sys 0.000000 (best of 1107)
(C)
hg perfrevset 'heads(commonancestors(a7cf55 + d8b15))'
! wall 0.000568 comb 0.000000 user 0.000000 sys 0.000000 (best of 4646)
Sean Farley <sean@farley.io> [Mon, 18 Jun 2018 19:41:54 -0700] rev 38624
revsets: add commonancestors revset
This is a method to reproduce "::x and ::y" such that a set can be sent
in. For instance, it'd be convenient to have "::heads()" work like this
but that already means "::x + ::y + ..." for each element in the
"heads()" set.
Therefore, we add the "commonancestors" method to mean "::x and ::y ..."
for each head in the given set.