stablerange: introduce an 'basicstablerange'
This class hold all the basic of stable range but the part specific to the
sorting.
This allow to clearly express what is expected from each method and to generate
tests output to be validated against the more complex implementation.
While writing this, we spotted a bug in the current stable range implementation.
Fix coming.
Set up some configs
$ cat >> $HGRCPATH <<EOF
> [extensions]
> rebase=
> EOF
$ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $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 orphan changesets
$ hg evolve --list
d2ae7f538514: b
unstable: cb9a9f314b8b (obsolete parent)
177f92b77385: c
orphan: d2ae7f538514 (orphan 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 phase-divergent 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 content-divergent changesets
$ hg evolve --list
c882616e9d84: b
divergent: a922b3733e98 (draft) (precursor d2ae7f538514)
a922b3733e98: b
divergent: c882616e9d84 (draft) (precursor d2ae7f538514)
$ hg evolve --list --rev c882616e9d84
c882616e9d84: b
divergent: a922b3733e98 (draft) (precursor d2ae7f538514)
$ hg phase -p a922b3733e98
$ hg evolve --list
c882616e9d84: b
divergent: a922b3733e98 (public) (precursor d2ae7f538514)
$ cd ..