diff options
Diffstat (limited to 'tests/test-pull-pull-corruption.t')
-rw-r--r-- | tests/test-pull-pull-corruption.t | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/test-pull-pull-corruption.t b/tests/test-pull-pull-corruption.t new file mode 100644 index 0000000..4df2984 --- /dev/null +++ b/tests/test-pull-pull-corruption.t @@ -0,0 +1,72 @@ +Corrupt an hg repo with two pulls. +create one repo with a long history + + $ hg init source1 + $ cd source1 + $ touch foo + $ hg add foo + $ for i in 1 2 3 4 5 6 7 8 9 10; do + > echo $i >> foo + > hg ci -m $i + > done + $ cd .. + +create one repo with a shorter history + + $ hg clone -r 0 source1 source2 + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + updating to branch default + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cd source2 + $ echo a >> foo + $ hg ci -m a + $ cd .. + +create a third repo to pull both other repos into it + + $ hg init corrupted + $ cd corrupted + +use a hook to make the second pull start while the first one is still running + + $ echo '[hooks]' >> .hg/hgrc + $ echo 'prechangegroup = sleep 5' >> .hg/hgrc + +start a pull... + + $ hg pull ../source1 > pull.out 2>&1 & + +... and start another pull before the first one has finished + + $ sleep 1 + $ hg pull ../source2 2>/dev/null + pulling from ../source2 + searching for changes + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files (+1 heads) + (run 'hg heads' to see heads, 'hg merge' to merge) + $ cat pull.out + pulling from ../source1 + requesting all changes + adding changesets + adding manifests + adding file changes + added 10 changesets with 10 changes to 1 files + (run 'hg update' to get a working copy) + +see the result + + $ wait + $ hg verify + checking changesets + checking manifests + crosschecking files in changesets and manifests + checking files + 1 files, 11 changesets, 11 total revisions + + $ cd .. |