--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-unionrepo.t Fri Jan 18 15:54:09 2013 +0100
@@ -0,0 +1,148 @@
+Test unionrepo functionality
+
+Create one repository
+
+ $ hg init repo1
+ $ cd repo1
+ $ touch repo1-0
+ $ echo repo1-0 > f
+ $ hg ci -Aqmrepo1-0
+ $ touch repo1-1
+ $ echo repo1-1 >> f
+ $ hg ci -Aqmrepo1-1
+ $ touch repo1-2
+ $ echo repo1-2 >> f
+ $ hg ci -Aqmrepo1-2
+ $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
+ 2:68c0685446a3 repo1-2
+ 1:8a58db72e69d repo1-1
+ 0:f093fec0529b repo1-0
+ $ tip1=`hg id -q`
+ $ cd ..
+
+- and a clone with a not-completely-trivial history
+
+ $ hg clone -q repo1 --rev 0 repo2
+ $ cd repo2
+ $ touch repo2-1
+ $ sed '1irepo2-1 at top' f > f.tmp
+ $ mv f.tmp f
+ $ hg ci -Aqmrepo2-1
+ $ touch repo2-2
+ $ hg pull -q ../repo1 -r 1
+ $ hg merge -q
+ $ hg ci -Aqmrepo2-2-merge
+ $ touch repo2-3
+ $ echo repo2-3 >> f
+ $ hg ci -mrepo2-3
+ $ hg log --template '{rev}:{node|short} {desc|firstline}\n'
+ 4:2f0d178c469c repo2-3
+ 3:9e6fb3e0b9da repo2-2-merge
+ 2:8a58db72e69d repo1-1
+ 1:c337dba826e7 repo2-1
+ 0:f093fec0529b repo1-0
+ $ cd ..
+
+revisions from repo2 appear as appended / pulled to repo1
+
+ $ hg -R union:repo1+repo2 log --template '{rev}:{node|short} {desc|firstline}\n'
+ 5:2f0d178c469c repo2-3
+ 4:9e6fb3e0b9da repo2-2-merge
+ 3:c337dba826e7 repo2-1
+ 2:68c0685446a3 repo1-2
+ 1:8a58db72e69d repo1-1
+ 0:f093fec0529b repo1-0
+
+manifest can be retrieved for revisions in both repos
+
+ $ hg -R union:repo1+repo2 mani -r $tip1
+ f
+ repo1-0
+ repo1-1
+ repo1-2
+ $ hg -R union:repo1+repo2 mani -r 4
+ f
+ repo1-0
+ repo1-1
+ repo2-1
+ repo2-2
+
+files can be retrieved form both repos
+
+ $ hg -R repo1 cat repo1/f -r2
+ repo1-0
+ repo1-1
+ repo1-2
+
+ $ hg -R union:repo1+repo2 cat -r$tip1 repo1/f
+ repo1-0
+ repo1-1
+ repo1-2
+
+ $ hg -R union:repo1+repo2 cat -r4 $TESTTMP/repo1/f
+ repo2-1 at top
+ repo1-0
+ repo1-1
+
+files can be compared across repos
+
+ $ hg -R union:repo1+repo2 diff -r$tip1 -rtip
+ diff -r 68c0685446a3 -r 2f0d178c469c f
+ --- a/f Thu Jan 01 00:00:00 1970 +0000
+ +++ b/f Thu Jan 01 00:00:00 1970 +0000
+ @@ -1,3 +1,4 @@
+ +repo2-1 at top
+ repo1-0
+ repo1-1
+ -repo1-2
+ +repo2-3
+
+heads from both repos are found correctly
+
+ $ hg -R union:repo1+repo2 heads --template '{rev}:{node|short} {desc|firstline}\n'
+ 5:2f0d178c469c repo2-3
+ 2:68c0685446a3 repo1-2
+
+revsets works across repos
+
+ $ hg -R union:repo1+repo2 id -r "ancestor($tip1, 5)"
+ 8a58db72e69d
+
+annotate works - an indication that linkrevs works
+
+ $ hg --cwd repo1 -R union:../repo2 annotate $TESTTMP/repo1/f -r tip
+ 3: repo2-1 at top
+ 0: repo1-0
+ 1: repo1-1
+ 5: repo2-3
+
+union repos can be cloned ... and clones works correctly
+
+ $ hg clone -U union:repo1+repo2 repo3
+ requesting all changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 6 changesets with 11 changes to 6 files (+1 heads)
+
+ $ hg -R repo3 paths
+ default = union:repo1+repo2
+
+ $ hg -R repo3 verify
+ checking changesets
+ checking manifests
+ crosschecking files in changesets and manifests
+ checking files
+ 6 files, 6 changesets, 11 total revisions
+
+ $ hg -R repo3 heads --template '{rev}:{node|short} {desc|firstline}\n'
+ 5:2f0d178c469c repo2-3
+ 2:68c0685446a3 repo1-2
+
+ $ hg -R repo3 log --template '{rev}:{node|short} {desc|firstline}\n'
+ 5:2f0d178c469c repo2-3
+ 4:9e6fb3e0b9da repo2-2-merge
+ 3:c337dba826e7 repo2-1
+ 2:68c0685446a3 repo1-2
+ 1:8a58db72e69d repo1-1
+ 0:f093fec0529b repo1-0