2010-09-26 22:41:32 +04:00
|
|
|
Corrupt an hg repo with a pull started during an aborted commit
|
|
|
|
Create two repos, so that one of them can pull from the other one.
|
|
|
|
|
|
|
|
$ hg init source
|
|
|
|
$ cd source
|
|
|
|
$ touch foo
|
|
|
|
$ hg add foo
|
|
|
|
$ hg ci -m 'add foo'
|
|
|
|
$ hg clone . ../corrupted
|
|
|
|
updating to branch default
|
|
|
|
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
|
|
$ echo >> foo
|
|
|
|
$ hg ci -m 'change foo'
|
|
|
|
|
|
|
|
Add a hook to wait 5 seconds and then abort the commit
|
|
|
|
|
|
|
|
$ cd ../corrupted
|
2012-06-15 20:56:16 +04:00
|
|
|
$ echo "[hooks]" >> .hg/hgrc
|
2015-04-23 16:39:21 +03:00
|
|
|
$ echo 'pretxncommit = sh -c "sleep 5; exit 1"' >> .hg/hgrc
|
2010-09-26 22:41:32 +04:00
|
|
|
|
|
|
|
start a commit...
|
|
|
|
|
|
|
|
$ touch bar
|
|
|
|
$ hg add bar
|
|
|
|
$ hg ci -m 'add bar' &
|
|
|
|
|
|
|
|
... and start a pull while the commit is still running
|
|
|
|
|
|
|
|
$ sleep 1
|
|
|
|
$ hg pull ../source 2>/dev/null
|
|
|
|
pulling from ../source
|
|
|
|
transaction abort!
|
|
|
|
rollback completed
|
|
|
|
abort: pretxncommit hook exited with status 1
|
|
|
|
searching for changes
|
|
|
|
adding changesets
|
|
|
|
adding manifests
|
|
|
|
adding file changes
|
|
|
|
added 1 changesets with 1 changes to 1 files
|
2017-10-12 10:39:50 +03:00
|
|
|
new changesets 52998019f625
|
2010-09-26 22:41:32 +04:00
|
|
|
(run 'hg update' to get a working copy)
|
|
|
|
|
|
|
|
see what happened
|
|
|
|
|
|
|
|
$ wait
|
|
|
|
$ hg verify
|
|
|
|
checking changesets
|
|
|
|
checking manifests
|
|
|
|
crosschecking files in changesets and manifests
|
|
|
|
checking files
|
|
|
|
1 files, 2 changesets, 2 total revisions
|
2012-06-11 03:40:51 +04:00
|
|
|
|
|
|
|
$ cd ..
|