2019-12-10 02:24:31 +03:00
|
|
|
#chg-compatible
|
|
|
|
|
2020-01-20 13:42:49 +03:00
|
|
|
$ disable treemanifest
|
2014-08-06 20:53:08 +04:00
|
|
|
#require unix-permissions no-root
|
2011-04-29 11:43:21 +04:00
|
|
|
|
2016-02-05 16:32:05 +03:00
|
|
|
$ cat > $TESTTMP/dumpjournal.py <<EOF
|
|
|
|
> import sys
|
|
|
|
> for entry in sys.stdin.read().split('\n'):
|
|
|
|
> if entry:
|
2017-06-15 20:32:32 +03:00
|
|
|
> print(entry.split('\x00')[0])
|
2016-02-05 16:32:05 +03:00
|
|
|
> EOF
|
|
|
|
|
2011-04-29 11:43:21 +04:00
|
|
|
$ teststrip() {
|
|
|
|
> hg -q up -C $1
|
|
|
|
> echo % before update $1, strip $2
|
|
|
|
> hg parents
|
|
|
|
> chmod -$3 $4
|
2019-02-25 14:50:46 +03:00
|
|
|
> hg debugstrip $2 2>&1 | sed 's/\(bundle\).*/\1/' | sed 's/Permission denied.*\.hg\/store\/\(.*\)/Permission denied \.hg\/store\/\1/'
|
2011-04-29 11:43:21 +04:00
|
|
|
> echo % after update $1, strip $2
|
|
|
|
> chmod +$3 $4
|
|
|
|
> hg verify
|
|
|
|
> echo % journal contents
|
|
|
|
> if [ -f .hg/store/journal ]; then
|
2017-06-20 16:45:02 +03:00
|
|
|
> cat .hg/store/journal | $PYTHON $TESTTMP/dumpjournal.py
|
2011-04-29 11:43:21 +04:00
|
|
|
> else
|
|
|
|
> echo "(no journal)"
|
|
|
|
> fi
|
|
|
|
> ls .hg/store/journal >/dev/null 2>&1 && hg recover
|
|
|
|
> ls .hg/strip-backup/* >/dev/null 2>&1 && hg unbundle -q .hg/strip-backup/*
|
|
|
|
> rm -rf .hg/strip-backup
|
|
|
|
> }
|
|
|
|
|
|
|
|
$ hg init test
|
|
|
|
$ cd test
|
|
|
|
$ echo a > a
|
|
|
|
$ hg -q ci -m "a" -A
|
|
|
|
$ echo b > b
|
|
|
|
$ hg -q ci -m "b" -A
|
|
|
|
$ echo b2 >> b
|
|
|
|
$ hg -q ci -m "b2" -A
|
|
|
|
$ echo c > c
|
|
|
|
$ hg -q ci -m "c" -A
|
|
|
|
$ teststrip 0 2 w .hg/store/data/b.i
|
|
|
|
% before update 0, strip 2
|
|
|
|
changeset: 0:cb9a9f314b8b
|
|
|
|
user: test
|
|
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
summary: a
|
|
|
|
|
|
|
|
saved backup bundle
|
|
|
|
transaction abort!
|
|
|
|
failed to truncate data/b.i
|
|
|
|
rollback failed - please run hg recover
|
2016-09-19 19:14:35 +03:00
|
|
|
strip failed, backup bundle
|
2011-04-29 11:43:21 +04:00
|
|
|
abort: Permission denied .hg/store/data/b.i
|
2019-10-31 03:40:12 +03:00
|
|
|
(current process runs with uid 42)
|
|
|
|
($TESTTMP/test/.hg/store/data/b.i: mode 0o52, uid 42, gid 42)
|
|
|
|
($TESTTMP/test/.hg/store/data: mode 0o52, uid 42, gid 42)
|
2011-04-29 11:43:21 +04:00
|
|
|
% after update 0, strip 2
|
|
|
|
abandoned transaction found - run hg recover
|
|
|
|
checking changesets
|
|
|
|
checking manifests
|
|
|
|
crosschecking files in changesets and manifests
|
|
|
|
checking files
|
|
|
|
b@?: rev 1 points to nonexistent changeset 2
|
|
|
|
(expected 1)
|
|
|
|
b@?: 736c29771fba not in manifests
|
|
|
|
warning: orphan revlog 'data/c.i'
|
|
|
|
2 files, 2 changesets, 3 total revisions
|
|
|
|
2 warnings encountered!
|
|
|
|
2 integrity errors encountered!
|
|
|
|
% journal contents
|
2019-08-31 00:56:12 +03:00
|
|
|
00changelog.d
|
2011-04-29 11:43:21 +04:00
|
|
|
00changelog.i
|
|
|
|
00manifest.i
|
|
|
|
data/b.i
|
|
|
|
data/c.i
|
|
|
|
rolling back interrupted transaction
|
|
|
|
$ teststrip 0 2 r .hg/store/data/b.i
|
|
|
|
% before update 0, strip 2
|
|
|
|
changeset: 0:cb9a9f314b8b
|
|
|
|
user: test
|
|
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
summary: a
|
|
|
|
|
|
|
|
abort: Permission denied .hg/store/data/b.i
|
2019-10-31 03:40:12 +03:00
|
|
|
(current process runs with uid 42)
|
|
|
|
($TESTTMP/test/.hg/store/data/b.i: mode 0o52, uid 42, gid 42)
|
|
|
|
($TESTTMP/test/.hg/store/data: mode 0o52, uid 42, gid 42)
|
2011-04-29 11:43:21 +04:00
|
|
|
% after update 0, strip 2
|
|
|
|
checking changesets
|
|
|
|
checking manifests
|
|
|
|
crosschecking files in changesets and manifests
|
|
|
|
checking files
|
|
|
|
3 files, 4 changesets, 4 total revisions
|
|
|
|
% journal contents
|
|
|
|
(no journal)
|
|
|
|
$ teststrip 0 2 w .hg/store/00manifest.i
|
|
|
|
% before update 0, strip 2
|
|
|
|
changeset: 0:cb9a9f314b8b
|
|
|
|
user: test
|
|
|
|
date: Thu Jan 01 00:00:00 1970 +0000
|
|
|
|
summary: a
|
|
|
|
|
|
|
|
saved backup bundle
|
|
|
|
transaction abort!
|
|
|
|
failed to truncate 00manifest.i
|
|
|
|
rollback failed - please run hg recover
|
2016-09-19 19:14:35 +03:00
|
|
|
strip failed, backup bundle
|
2011-04-29 11:43:21 +04:00
|
|
|
abort: Permission denied .hg/store/00manifest.i
|
2019-10-31 03:40:12 +03:00
|
|
|
(current process runs with uid 42)
|
|
|
|
($TESTTMP/test/.hg/store/00manifest.i: mode 0o52, uid 42, gid 42)
|
|
|
|
($TESTTMP/test/.hg/store: mode 0o52, uid 42, gid 42)
|
2011-04-29 11:43:21 +04:00
|
|
|
% after update 0, strip 2
|
|
|
|
abandoned transaction found - run hg recover
|
|
|
|
checking changesets
|
|
|
|
checking manifests
|
|
|
|
manifest@?: rev 2 points to nonexistent changeset 2
|
|
|
|
manifest@?: 3362547cdf64 not in changesets
|
|
|
|
manifest@?: rev 3 points to nonexistent changeset 3
|
|
|
|
manifest@?: 265a85892ecb not in changesets
|
|
|
|
crosschecking files in changesets and manifests
|
|
|
|
c@3: in manifest but not in changeset
|
|
|
|
checking files
|
|
|
|
b@?: rev 1 points to nonexistent changeset 2
|
|
|
|
(expected 1)
|
|
|
|
c@?: rev 0 points to nonexistent changeset 3
|
|
|
|
3 files, 2 changesets, 4 total revisions
|
|
|
|
1 warnings encountered!
|
|
|
|
7 integrity errors encountered!
|
|
|
|
(first damaged changeset appears to be 3)
|
|
|
|
% journal contents
|
2019-08-31 00:56:12 +03:00
|
|
|
00changelog.d
|
2011-04-29 11:43:21 +04:00
|
|
|
00changelog.i
|
|
|
|
00manifest.i
|
|
|
|
data/b.i
|
|
|
|
data/c.i
|
|
|
|
rolling back interrupted transaction
|
|
|
|
|
2012-06-11 03:40:51 +04:00
|
|
|
$ cd ..
|