evolve--list: initial implementation
This implementation does not work with '-T json' since it needs multiple levels
of depth.
There is various small issue with the current data, the test coverage is a bit
low and the output is likely to change, but this is a good step forward.
Sample output:
01a3e66ba030: e (amended)
unstable: 1995fc658ad6 (unstable parent)
divergent: 84e1c6ae319d d3b90e9c84ab (precursor 3efa43a7427b)
divergent: add9a356b8cf (precursor 3efa43a7427b)
add9a356b8cf: e (rebased)
divergent: 84e1c6ae319d d3b90e9c84ab (precursor 3efa43a7427b)
divergent: 01a3e66ba030 (precursor 3efa43a7427b)
84e1c6ae319d: e (e+f split)
unstable: 1995fc658ad6 (unstable parent)
divergent: 01a3e66ba030 (precursor 3efa43a7427b)
divergent: add9a356b8cf (precursor 3efa43a7427b)
d3b90e9c84ab: f (e+f split)
unstable: 84e1c6ae319d (unstable parent)
divergent: 01a3e66ba030 (precursor 3efa43a7427b)
divergent: add9a356b8cf (precursor 3efa43a7427b)
8febfaee0dd1: c
unstable: 43765473b851 (obsolete parent)
bumped: b36d99df9f41 (immutable precursor)
1995fc658ad6: d: commit with a long happy message, ababagalamaga, ababagal...
unstable: 8febfaee0dd1 (unstable parent)
fa8498ad030f: aa
unstable: d3b90e9c84ab (unstable parent)
Set up some configs
$ cat >> $HGRCPATH <<EOF
> [extensions]
> rebase=
> EOF
$ echo "evolve=$(echo $(dirname $TESTDIR))/hgext/evolve.py" >> $HGRCPATH
Test the instability listing
$ hg init r2
$ cd r2
$ echo a > a && hg ci -Am a
adding a
$ echo b > b && hg ci -Am b
adding b
$ echo c > c && hg ci -Am c
adding c
$ hg up 0
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ echo a >> a && hg ci --amend -m a
2 new unstable changesets
$ hg evolve --list
d2ae7f538514: b
unstable: cb9a9f314b8b (obsolete parent)
177f92b77385: c
unstable: d2ae7f538514 (unstable parent)
$ cd ..
Test the bumpedness listing
$ hg init r3
$ cd r3
$ echo a > a && hg ci -Am a
adding a
$ echo b > b && hg ci --amend -m ab
$ hg phase --public --rev 0 --hidden
1 new bumped changesets
$ hg evolve --list
88cc282e27fc: ab
bumped: cb9a9f314b8b (immutable precursor)
$ cd ..
Test the divergence listing
$ hg init r1
$ cd r1
$ echo a > a && hg ci -Am a
adding a
$ hg up 0
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ echo b > b && hg ci -Am b
adding b
$ hg up 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo c > c && hg ci -Am c
adding c
created new head
$ hg up 0
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo d > d && hg ci -Am d
adding d
created new head
$ hg rebase -s 1 -d 2
rebasing 1:d2ae7f538514 "b"
$ hg rebase -s 1 -d 3 --hidden --config experimental.allowdivergence=True
rebasing 1:d2ae7f538514 "b"
2 new divergent changesets
$ hg evolve --list
c882616e9d84: b
divergent: a922b3733e98 (precursor d2ae7f538514)
a922b3733e98: b
divergent: c882616e9d84 (precursor d2ae7f538514)
$ cd ..