--- a/tests/test-generaldelta.t Fri Nov 21 13:58:49 2014 +0800
+++ b/tests/test-generaldelta.t Thu Nov 20 16:30:57 2014 -0800
@@ -22,3 +22,50 @@
>>> gdsize = os.stat("gdrepo/.hg/store/00manifest.i").st_size
>>> if regsize < gdsize:
... print 'generaldata increased size of manifest'
+
+Verify rev reordering doesnt create invalid bundles (issue4462)
+This requires a commit tree that when pulled will reorder manifest revs such
+that the second manifest to create a file rev will be ordered before the first
+manifest to create that file rev. We also need to do a partial pull to ensure
+reordering happens. At the end we verify the linkrev points at the earliest
+commit.
+
+ $ hg init server --config format.generaldelta=True
+ $ cd server
+ $ touch a
+ $ hg commit -Aqm a
+ $ echo x > x
+ $ echo y > y
+ $ hg commit -Aqm xy
+ $ hg up -q '.^'
+ $ echo x > x
+ $ echo z > z
+ $ hg commit -Aqm xz
+ $ hg up -q 1
+ $ echo b > b
+ $ hg commit -Aqm b
+ $ hg merge -q 2
+ $ hg commit -Aqm merge
+ $ echo c > c
+ $ hg commit -Aqm c
+ $ hg log -G -T '{rev} {shortest(node)} {desc}'
+ @ 5 ebb8 c
+ |
+ o 4 baf7 merge
+ |\
+ | o 3 a129 b
+ | |
+ o | 2 958c xz
+ | |
+ | o 1 f00c xy
+ |/
+ o 0 3903 a
+
+ $ cd ..
+ $ hg init client
+ $ cd client
+ $ hg pull -q ../server -r 4
+ $ hg debugindex x
+ rev offset length base linkrev nodeid p1 p2
+ 0 0 3 0 1 1406e7411862 000000000000 000000000000
+