##// END OF EJS Templates
revset: lookup descendents for negative arguments to ancestor operator...
revset: lookup descendents for negative arguments to ancestor operator Negative offsets to the `~` operator now search for descendents. The search is aborted when a node has more than one child as we do not have a definition for 'nth child'. Optionally we can introduce such a notion and take the nth child ordered by rev number. The current revset language does provides a short operator for ancestor lookup but not for descendents. This gives user a simple revset to move to the previous changeset, e.g. `hg up '.~1'` but not to the 'next' changeset. With this change userse can now use `.~-1` as a shortcut to move to the next changeset. This fits better into allowing users to specify revisions via revsets and avoiding the need for special `hg next` and `hg prev` operations. The alternative to negative offsets is adding a new operator. We do not have many operators in ascii left that do not require bash escaping (',', '_', and '/' come to mind). If we decide that we should add a more convenient short operator such as ('/', e.g. './1') we can later add it and allow ascendents lookup via negative numbers.

File last commit:

r30003:46825334 default
r32699:f75d0aa5 default
Show More
test-glog-topological.t
115 lines | 1.4 KiB | text/troff | Tads3Lexer
/ tests / test-glog-topological.t
This test file aims at test topological iteration and the various configuration it can has.
$ cat >> $HGRCPATH << EOF
> [ui]
> logtemplate={rev}\n
> EOF
On this simple example, all topological branch are displayed in turn until we
can finally display 0. this implies skipping from 8 to 3 and coming back to 7
later.
$ hg init test01
$ cd test01
$ hg unbundle $TESTDIR/bundles/remote.hg
adding changesets
adding manifests
adding file changes
added 9 changesets with 7 changes to 4 files (+1 heads)
(run 'hg heads' to see heads, 'hg merge' to merge)
$ hg log -G
o 8
|
| o 7
| |
| o 6
| |
| o 5
| |
| o 4
| |
o | 3
| |
o | 2
| |
o | 1
|/
o 0
(display all nodes)
$ hg log -G -r 'sort(all(), topo)'
o 8
|
o 3
|
o 2
|
o 1
|
| o 7
| |
| o 6
| |
| o 5
| |
| o 4
|/
o 0
(display nodes filtered by log options)
$ hg log -G -r 'sort(all(), topo)' -k '.3'
o 8
|
o 3
|
~
o 7
|
o 6
|
~
(revset skipping nodes)
$ hg log -G --rev 'sort(not (2+6), topo)'
o 8
|
o 3
:
o 1
|
| o 7
| :
| o 5
| |
| o 4
|/
o 0
(begin) from the other branch
$ hg log -G -r 'sort(all(), topo, topo.firstbranch=5)'
o 7
|
o 6
|
o 5
|
o 4
|
| o 8
| |
| o 3
| |
| o 2
| |
| o 1
|/
o 0