--- a/tests/test-convert-splicemap.t Fri Feb 10 22:25:49 2012 +0100
+++ b/tests/test-convert-splicemap.t Fri Feb 10 22:34:13 2012 +0100
@@ -4,7 +4,8 @@
$ echo 'graphlog =' >> $HGRCPATH
$ glog()
> {
- > hg glog --template '{rev} "{desc|firstline}" files: {files}\n' "$@"
+ > hg glog --template '{rev}:{node|short} "{desc|firstline}"\
+ > files: {files}\n' "$@"
> }
$ hg init repo1
$ cd repo1
@@ -21,6 +22,14 @@
adding c
$ PARENTID2=`hg id --debug -i`
$ cd ..
+ $ glog -R repo1
+ @ 2:e55c719b85b6 "addc" files: c
+ |
+ o 1:6d4c2037ddc2 "addb" files: a b
+ |
+ o 0:07f494440405 "adda" files: a
+
+
$ hg init repo2
$ cd repo2
$ echo b > a
@@ -36,6 +45,13 @@
$ hg ci -Am adde
adding e
$ cd ..
+ $ glog -R repo2
+ @ 2:a39b65753b0a "adde" files: e
+ |
+ o 1:e4ea00df9189 "changed" files: d
+ |
+ o 0:527cdedf31fb "addaandd" files: a d
+
test invalid splicemap
@@ -49,9 +65,12 @@
splice repo2 on repo1
$ cat > splicemap <<EOF
- > $CHILDID1 $PARENTID1
+ > $CHILDID1 $PARENTID1
> $CHILDID2 $PARENTID2,$CHILDID1
> EOF
+ $ cat splicemap
+ 527cdedf31fbd5ea708aa14eeecf53d4676f38db 6d4c2037ddc2cb2627ac3a244ecce35283268f8e
+ e4ea00df91897da3079a10fab658c1eddba6617b e55c719b85b60e5102fac26110ba626e7cb6b7dc,527cdedf31fbd5ea708aa14eeecf53d4676f38db
$ hg clone repo1 target1
updating to branch default
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
@@ -65,15 +84,137 @@
spliced in ['e55c719b85b60e5102fac26110ba626e7cb6b7dc', '527cdedf31fbd5ea708aa14eeecf53d4676f38db'] as parents of e4ea00df91897da3079a10fab658c1eddba6617b
0 adde
$ glog -R target1
- o 5 "adde" files: e
+ o 5:16bc847b02aa "adde" files: e
+ |
+ o 4:e30e4fee3418 "changed" files: d
+ |\
+ | o 3:e673348c3a3c "addaandd" files: a d
+ | |
+ @ | 2:e55c719b85b6 "addc" files: c
+ |/
+ o 1:6d4c2037ddc2 "addb" files: a b
|
- o 4 "changed" files: d
+ o 0:07f494440405 "adda" files: a
+
+
+
+
+Test splicemap and conversion order
+
+ $ hg init ordered
+ $ cd ordered
+ $ echo a > a
+ $ hg ci -Am adda
+ adding a
+ $ hg branch branch
+ marked working directory as branch branch
+ (branches are permanent and global, did you want a bookmark?)
+ $ echo a >> a
+ $ hg ci -Am changea
+ $ echo a >> a
+ $ hg ci -Am changeaagain
+ $ hg up 0
+ 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ echo b > b
+ $ hg ci -Am addb
+ adding b
+
+We want 2 to depend on 1 and 3. Since 3 is always converted after 2,
+the bug should be exhibited with all conversion orders.
+
+ $ cat > ../splicemap <<EOF
+ > $(hg id -r 2 -i --debug) $(hg id -r 1 -i --debug),$(hg id -r 3 -i --debug)
+ > EOF
+ $ cd ..
+ $ cat splicemap
+ 7c364e7fa7d70ae525610c016317ed717b519d97 717d54d67e6c31fd75ffef2ff3042bdd98418437,102a90ea7b4a3361e4082ed620918c261189a36a
+
+Test regular conversion
+
+ $ hg convert --splicemap splicemap ordered ordered-hg1
+ initializing destination ordered-hg1 repository
+ scanning source...
+ sorting...
+ converting...
+ 3 adda
+ 2 changea
+ 1 addb
+ 0 changeaagain
+ spliced in ['717d54d67e6c31fd75ffef2ff3042bdd98418437', '102a90ea7b4a3361e4082ed620918c261189a36a'] as parents of 7c364e7fa7d70ae525610c016317ed717b519d97
+ $ glog -R ordered-hg1
+ o 3:4cb04b9afbf2 "changeaagain" files: a
|\
- | o 3 "addaandd" files: a d
+ | o 2:102a90ea7b4a "addb" files: b
| |
- @ | 2 "addc" files: c
+ o | 1:717d54d67e6c "changea" files: a
|/
- o 1 "addb" files: a b
- |
- o 0 "adda" files: a
+ o 0:07f494440405 "adda" files: a
+
+Test conversion with parent revisions already in dest, using source
+and destination identifiers. Test unknown splicemap target.
+
+ $ hg convert -r1 ordered ordered-hg2
+ initializing destination ordered-hg2 repository
+ scanning source...
+ sorting...
+ converting...
+ 1 adda
+ 0 changea
+ $ hg convert -r3 ordered ordered-hg2
+ scanning source...
+ sorting...
+ converting...
+ 0 addb
+ $ cat > splicemap <<EOF
+ > $(hg -R ordered id -r 2 -i --debug) \
+ > $(hg -R ordered-hg2 id -r 1 -i --debug),\
+ > $(hg -R ordered-hg2 id -r 2 -i --debug)
+ > deadbeef102a90ea7b4a3361e4082ed620918c26 deadbeef102a90ea7b4a3361e4082ed620918c27
+ > EOF
+ $ hg convert --splicemap splicemap ordered ordered-hg2
+ scanning source...
+ splice map revision deadbeef102a90ea7b4a3361e4082ed620918c26 is not being converted, ignoring
+ sorting...
+ converting...
+ 0 changeaagain
+ spliced in ['717d54d67e6c31fd75ffef2ff3042bdd98418437', '102a90ea7b4a3361e4082ed620918c261189a36a'] as parents of 7c364e7fa7d70ae525610c016317ed717b519d97
+ $ glog -R ordered-hg2
+ o 3:4cb04b9afbf2 "changeaagain" files: a
+ |\
+ | o 2:102a90ea7b4a "addb" files: b
+ | |
+ o | 1:717d54d67e6c "changea" files: a
+ |/
+ o 0:07f494440405 "adda" files: a
+
+
+Test empty conversion
+
+ $ hg convert --splicemap splicemap ordered ordered-hg2
+ scanning source...
+ splice map revision deadbeef102a90ea7b4a3361e4082ed620918c26 is not being converted, ignoring
+ sorting...
+ converting...
+
+Test clonebranches
+
+ $ hg --config convert.hg.clonebranches=true convert \
+ > --splicemap splicemap ordered ordered-hg3
+ initializing destination ordered-hg3 repository
+ scanning source...
+ abort: revision 717d54d67e6c31fd75ffef2ff3042bdd98418437 not be found in destination repository (lookups with clonebranches=true are not implemented)
+ [255]
+
+Test invalid dependency
+
+ $ cat > splicemap <<EOF
+ > $(hg -R ordered id -r 2 -i --debug) \
+ > deadbeef102a90ea7b4a3361e4082ed620918c26,\
+ > $(hg -R ordered-hg2 id -r 2 -i --debug)
+ > EOF
+ $ hg convert --splicemap splicemap ordered ordered-hg4
+ initializing destination ordered-hg4 repository
+ scanning source...
+ abort: unknown splice map parent: deadbeef102a90ea7b4a3361e4082ed620918c26
+ [255]