--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-split.t Thu Jun 18 16:48:53 2015 -0700
@@ -0,0 +1,193 @@
+test of the split command
+-----------------------
+
+ $ cat >> $HGRCPATH <<EOF
+ > [defaults]
+ > amend=-d "0 0"
+ > fold=-d "0 0"
+ > split=-d "0 0"
+ > amend=-d "0 0"
+ > [web]
+ > push_ssl = false
+ > allow_push = *
+ > [phases]
+ > publish = False
+ > [diff]
+ > git = 1
+ > unified = 0
+ > [ui]
+ > interactive = true
+ > [extensions]
+ > hgext.graphlog=
+ > EOF
+ $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext/evolve.py" >> $HGRCPATH
+ $ mkcommit() {
+ > echo "$1" > "$1"
+ > hg add "$1"
+ > hg ci -m "add $1"
+ > }
+
+
+Basic case, split a head
+ $ hg init testsplit
+ $ cd testsplit
+ $ mkcommit _a
+ $ mkcommit _b
+ $ mkcommit _c
+ $ mkcommit _d
+ $ echo "change to a" >> _a
+ $ hg amend
+ $ hg debugobsolete
+ 9e84a109b8eb081ad754681ee4b1380d17a3741f aa8f656bb307022172d2648be6fb65322f801225 0 (*) {'user': 'test'} (glob)
+ f002b57772d7f09b180c407213ae16d92996a988 0 {9e84a109b8eb081ad754681ee4b1380d17a3741f} (*) {'user': 'test'} (glob)
+
+To create commits with the number of split
+ $ export NUM=0
+ $ export HGEDITOR="NUM=$((NUM+1)); echo split$NUM > $1"
+ $ hg split << EOF
+ > y
+ > y
+ > y
+ > n
+ > N
+ > y
+ > y
+ > EOF
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ reverting _a
+ adding _d
+ diff --git a/_a b/_a
+ 1 hunks, 1 lines changed
+ examine changes to '_a'? [Ynesfdaq?] y
+
+ @@ -1,0 +2,1 @@
+ +change to a
+ record change 1/2 to '_a'? [Ynesfdaq?] y
+
+ diff --git a/_d b/_d
+ new file mode 100644
+ examine changes to '_d'? [Ynesfdaq?] y
+
+ @@ -0,0 +1,1 @@
+ +_d
+ record change 2/2 to '_d'? [Ynesfdaq?] n
+
+ created new head
+ Done splitting? [yN] N
+ diff --git a/_d b/_d
+ new file mode 100644
+ examine changes to '_d'? [Ynesfdaq?] y
+
+ @@ -0,0 +1,1 @@
+ +_d
+ record this change to '_d'? [Ynesfdaq?] y
+
+ no more change to split
+
+ $ hg debugobsolete
+ 9e84a109b8eb081ad754681ee4b1380d17a3741f aa8f656bb307022172d2648be6fb65322f801225 0 (*) {'user': 'test'} (glob)
+ f002b57772d7f09b180c407213ae16d92996a988 0 {9e84a109b8eb081ad754681ee4b1380d17a3741f} (*) {'user': 'test'} (glob)
+ aa8f656bb307022172d2648be6fb65322f801225 8a76f55839e6badd47ed8338803d8bc16f578d68 1e105584671a463974ee2122f95979ce5e507f1a 0 (*) {'user': 'test'} (glob)
+
+Cannot split a commit with uncommited changes
+ $ hg up "desc(_c)"
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ $ echo "_cd" > _c
+ $ hg split
+ abort: uncommitted changes
+ [255]
+
+Split a revision specified with -r
+ $ hg up "desc(_c)" -C
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ echo "change to b" >> _b
+ $ hg amend -m "_cprim"
+ 2 new unstable changesets
+ $ hg evolve --all
+ move:[6] split0
+ atop:[9] _cprim
+ move:[7] split0
+ atop:[10] split0
+ working directory is now at * (glob)
+ $ hg log -r "desc(_cprim)" -v -p
+ changeset: 9:719157b217ac
+ parent: 1:37445b16603b
+ user: test
+ date: Thu Jan 01 00:00:00 1970 +0000
+ files: _b _c
+ description:
+ _cprim
+
+
+ diff --git a/_b b/_b
+ --- a/_b
+ +++ b/_b
+ @@ -1,0 +2,1 @@
+ +change to b
+ diff --git a/_c b/_c
+ new file mode 100644
+ --- /dev/null
+ +++ b/_c
+ @@ -0,0 +1,1 @@
+ +_c
+
+ $ hg split -r "desc(_cprim)" <<EOF
+ > y
+ > y
+ > y
+ > n
+ > y
+ > EOF
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+ reverting _b
+ adding _c
+ diff --git a/_b b/_b
+ 1 hunks, 1 lines changed
+ examine changes to '_b'? [Ynesfdaq?] y
+
+ @@ -1,0 +2,1 @@
+ +change to b
+ record change 1/2 to '_b'? [Ynesfdaq?] y
+
+ diff --git a/_c b/_c
+ new file mode 100644
+ examine changes to '_c'? [Ynesfdaq?] y
+
+ @@ -0,0 +1,1 @@
+ +_c
+ record change 2/2 to '_c'? [Ynesfdaq?] n
+
+ created new head
+ Done splitting? [yN] y
+
+Stop before splitting the commit completely creates a commit with all the
+remaining changes
+
+ $ hg debugobsolete
+ 9e84a109b8eb081ad754681ee4b1380d17a3741f aa8f656bb307022172d2648be6fb65322f801225 0 (*) {'user': 'test'} (glob)
+ f002b57772d7f09b180c407213ae16d92996a988 0 {9e84a109b8eb081ad754681ee4b1380d17a3741f} (*) {'user': 'test'} (glob)
+ aa8f656bb307022172d2648be6fb65322f801225 8a76f55839e6badd47ed8338803d8bc16f578d68 1e105584671a463974ee2122f95979ce5e507f1a 0 (*) {'user': 'test'} (glob)
+ 10200229058723ce8d67f6612c1f6b4f73b1fe73 719157b217acc43d397369a448824ed4c7a302f2 0 (*) {'user': 'test'} (glob)
+ 5d0c8b0f2d3e5e1ff95f93d7da2ba06650605ab5 0 {10200229058723ce8d67f6612c1f6b4f73b1fe73} (*) {'user': 'test'} (glob)
+ 8a76f55839e6badd47ed8338803d8bc16f578d68 0ea1d0d23e674ea8a6affe760741c82bb8e380f7 0 (*) {'user': 'test'} (glob)
+ 1e105584671a463974ee2122f95979ce5e507f1a b6099ccb49cae181af7c59ed5603a1dfca632445 0 (*) {'user': 'test'} (glob)
+ 719157b217acc43d397369a448824ed4c7a302f2 8eb71353cb2c70fc1154be3af79c0ce98898ae88 ead904640c8543606f72490c6ae10955fb11fff0 0 (*) {'user': 'test'} (glob)
+
+Cannot specify multiple revisions with -r
+ $ hg split -r "desc(_a)::"
+ abort: you can only specify one revision to split
+ [255]
+
+Cannot split a commit that is not a head if instability is not allowed
+ $ cat >> $HGRCPATH <<EOF
+ > [experimental]
+ > evolution=createmarkers
+ > evolutioncommands=split
+ > EOF
+ $ hg split -r "desc(_c)"
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ abort: cannot split commit: 719157b217ac not a head
+ [255]
+
+