tests/test-generaldelta.t
branchstable
changeset 23381 cc0ff93d0c0c
parent 19942 2c886dedd902
child 26118 049005de325e
--- 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
+