diff -r c00b156d6e76 -r cc0ff93d0c0c tests/test-generaldelta.t --- 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 +