Mercurial > hg
view tests/test-pull-pull-corruption.t @ 25881:9de443515f1d stable
help: scripting help topic
There are a lot of non-human consumers of Mercurial. And the challenges
and considerations for machines consuming Mercurial is significantly
different from what humans face.
I think there are enough special considerations around how machines
consume Mercurial that a dedicated help topic is warranted. I concede
the audience for this topic is probably small compared to the general
audience. However, lots of normal Mercurial users do things like create
one-off shell scripts for common workflows that I think this is useful
enough to be in the install (as opposed to, say, a wiki page - which
most users will likely never find).
This text is by no means perfect. But you have to start somewhere. I
think I did cover the important parts, though.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 18 Jul 2015 17:10:28 -0700 |
parents | f2719b387380 |
children | eb586ed5d8ce |
line wrap: on
line source
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 ..