[PATCH 0 of 9] Implement new revset.bisected() keywords, v2
Yann E. MORIN
yann.morin.1998 at anciens.enib.fr
Sun Sep 18 23:31:11 UTC 2011
Hello All!
As previously discussed on the list and on IRC, here is a patchset that
implements new revset.bisect() keywords:
- bisect(range)
All changesets in the bisection range, including good, bad and
skipped csets. This is roughly : (good::bad | bad::good)
- bisect(pruned)
All csets in the above range, that are either good, bad or skipped'
skipped csets that are not in range are omitted from the result.
This is roughly : range & (good|bad|skip)
- bisect(untested)
All csets in the range, that are neither good nor bad nor skipped.
This is roughly : range & ! (good|bad|skip)
- bisect(ignored)
All cset that may have an impact on the bisection, but are out of the
range. For example, a branch that is merged between good and bad, but
which branch point is out of the range.
This is roughly :
( ::bad - ::good | ::good - ::bad ) & ! range
Changes since v1:
- added documentation (Matt on IRC)
- rename bisect (Matt on IRC)
- testsuite using the DAG in test-bisect2
- fix commit messages
Remaining work (possibly in another series, later?):
- add new set of 'discarded' csets, eg. untested csets that are both
ancestor and descendant to two good csets, or two bad csets, possibly
differentiating between 'discarded because good' from 'discarded because
bad'
- do not report 'discarded' csets when reporting 'untested'
- report the shortest range usefull to the remaining bisection
The lattest is more complex than it sounds, depending (as Matt puts it)
"on which edge direction we've inferred". Would it make sense to decide
the direction of the bisection with:
if min(goods) < max(bads):
goods are globally lower revs than bads, eg. looking for regression
else
bads are globally lower revs than goods, eg. looking for bug fix
Also possibly waiting for a enhancement by Matt to pass a list to either
side of the '::' operator (if I understood correctly). Matt, would that
wor to build the set of all cset that are between good csets:
(goods)::(goods)
Patches 9 and 10 are *not* to be applied now, it's just a preview of the
way to print the changesets' bisection status in the log. It's ugly, and
breaks some tests for now. It's just a _preview_ of what I intend to do
later, possibly using tags, or extras, or a new 'bisect:' line... TBD...
Thank you!
Regards,
Yann E. MORIN.
More information about the Mercurial-devel
mailing list