[PATCH] revset: add exclusive revset

Durham Goode durham at fb.com
Sat Nov 16 11:07:49 CST 2013


On 11/15/13 11:36 PM, "Durham Goode" <durham at fb.com> wrote:

># HG changeset patch
># User Durham Goode <durham at fb.com>
># Date 1384575318 28800
>#      Fri Nov 15 20:15:18 2013 -0800
># Node ID 029191a9eb775c586ed02c201d0c555053ea44da
># Parent  aa80446aacc3b1574211649cd8f190250b6b04b3
>revset: add exclusive revset
>
>Adds a exclusive revset that has two forms:
>
>exclusive(<set>) is equivalent to "::<set> - ::(heads() - <set>)"
>
>exclusive(<include>,<exclude>) is equivalent to "::<include> -
>::<exclude>"
>
>On a large repo, this implementation can process/traverse 50,000 revs in
>0.7
>seconds, versus 4.2 seconds using "::<include> - ::<exclude>".

Talked in person with people about this.

- going to tweak the first form to be "::<set> - ::(heads() -
heads(<set>::))"
- going to use the built in ancestor.missingancestor. It's algorithmically
a little worse, but in practice is faster and less code.
- going to find a better name



More information about the Mercurial-devel mailing list