##// END OF EJS Templates
changelog: never inline changelog...
changelog: never inline changelog The test suite mostly use small repositories, that implies that most changelog in the tests are inlined. As a result, non-inlined changelog are quite poorly tested. Since non-inline changelog are most common case for serious repositories, this lack of testing is a significant problem that results in high profile issue like the one recently fixed by 66417f55ea33 and 849745d7da89. Inlining the changelog does not bring much to the table, the number of total file saved is negligible, and the changelog will be read by most operation anyway. So this changeset is make it so we never inline the changelog, and de-inline the one that are still inlined whenever we touch them. By doing that, we remove the "dual code path" situation for writing new entry to the changelog and move to a "single code path" situation. Having a single code path simplify the code and make sure it is covered by test (if test cover that situation obviously) This impact all tests that care about the number of file and the exchange size, but there is nothing too complicated in them just a lot of churn. The churn is made "worse" by the fact rust will use the persistent nodemap on any changelog now. Which is overall a win as it means testing the persistent nodemap more and having less special cases. In short, having inline changelog is mostly useless and an endless source of pain. We get rid of it.

File last commit:

r52074:dcaa2df1 default
r52074:dcaa2df1 default
Show More
test-repair-strip.t
150 lines | 4.3 KiB | text/troff | Tads3Lexer
/ tests / test-repair-strip.t
Gregory Szorc
tests: require revlog store with test-repair-strip.t...
r37443 #require unix-permissions no-root reporevlogstore
Patrick Mezard
test-repair-strip: turn into new style test
r14022
FUJIWARA Katsunori
tests: dump journal file by python script instead of sed for portability...
r27993 $ cat > $TESTTMP/dumpjournal.py <<EOF
> import sys
> for entry in sys.stdin.read().split('\n'):
> if entry:
Augie Fackler
tests: fix simple heredoc print statements to work on Py3...
r33686 > print(entry.split('\x00')[0])
FUJIWARA Katsunori
tests: dump journal file by python script instead of sed for portability...
r27993 > EOF
Patrick Mezard
test-repair-strip: turn into new style test
r14022 $ echo "[extensions]" >> $HGRCPATH
$ echo "mq=">> $HGRCPATH
$ teststrip() {
> hg -q up -C $1
> echo % before update $1, strip $2
> hg parents
> chmod -$3 $4
> hg strip $2 2>&1 | sed 's/\(bundle\).*/\1/' | sed 's/Permission denied.*\.hg\/store\/\(.*\)/Permission denied \.hg\/store\/\1/'
> echo % after update $1, strip $2
> chmod +$3 $4
> hg verify
> echo % journal contents
> if [ -f .hg/store/journal ]; then
Matt Harbison
tests: quote PYTHON usage...
r39743 > cat .hg/store/journal | "$PYTHON" $TESTTMP/dumpjournal.py
Patrick Mezard
test-repair-strip: turn into new style test
r14022 > else
> echo "(no journal)"
> fi
Valentin Gatien-Baron
recover: don't verify by default...
r44830 > if ls .hg/store/journal >/dev/null 2>&1; then
> hg recover --verify
> fi
Patrick Mezard
test-repair-strip: turn into new style test
r14022 > 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
Arseniy Alekseyev
tests: add a rewriting step to detect EACCES errors
r51215 (failure reason: [Errno *] $EACCES$ .hg/store/data/b.i') (glob)
Martin von Zweigbergk
strip: don't use "full" and "partial" to describe bundles...
r29954 strip failed, backup bundle
Arseniy Alekseyev
tests: add a rewriting step to detect EACCES errors
r51215 abort: $EACCES$ .hg/store/data/b.i'
Patrick Mezard
test-repair-strip: turn into new style test
r14022 % 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
Gregory Szorc
verify: drop "revlog" from warning message...
r37428 warning: orphan data file 'data/c.i'
Raphaël Gomès
verify: also check dirstate...
r50721 not checking dirstate because of previous errors
Meirambek Omyrzak
verify: make output less confusing (issue5924)...
r39525 checked 2 changesets with 3 changes to 2 files
Patrick Mezard
test-repair-strip: turn into new style test
r14022 2 warnings encountered!
2 integrity errors encountered!
% journal contents
changelog: never inline changelog...
r52074 00changelog.d
Patrick Mezard
test-repair-strip: turn into new style test
r14022 00changelog.i
00manifest.i
data/b.i
data/c.i
rolling back interrupted transaction
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
Raphaël Gomès
verify: also check dirstate...
r50721 checking dirstate
Meirambek Omyrzak
verify: make output less confusing (issue5924)...
r39525 checked 2 changesets with 2 changes to 2 files
Patrick Mezard
test-repair-strip: turn into new style test
r14022 $ 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
Arseniy Alekseyev
tests: add a rewriting step to detect EACCES errors
r51215 abort: $EACCES$ .hg/store/data/b.i'
Patrick Mezard
test-repair-strip: turn into new style test
r14022 % after update 0, strip 2
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
Raphaël Gomès
verify: also check dirstate...
r50721 checking dirstate
Meirambek Omyrzak
verify: make output less confusing (issue5924)...
r39525 checked 4 changesets with 4 changes to 3 files
Patrick Mezard
test-repair-strip: turn into new style test
r14022 % 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
Arseniy Alekseyev
tests: add a rewriting step to detect EACCES errors
r51215 (failure reason: [Errno *] $EACCES$ .hg/store/00manifest.i') (glob)
Martin von Zweigbergk
strip: don't use "full" and "partial" to describe bundles...
r29954 strip failed, backup bundle
Arseniy Alekseyev
tests: add a rewriting step to detect EACCES errors
r51215 abort: $EACCES$ .hg/store/00manifest.i'
Patrick Mezard
test-repair-strip: turn into new style test
r14022 % 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
Raphaël Gomès
verify: also check dirstate...
r50721 not checking dirstate because of previous errors
Meirambek Omyrzak
verify: make output less confusing (issue5924)...
r39525 checked 2 changesets with 4 changes to 3 files
Patrick Mezard
test-repair-strip: turn into new style test
r14022 1 warnings encountered!
7 integrity errors encountered!
(first damaged changeset appears to be 3)
% journal contents
changelog: never inline changelog...
r52074 00changelog.d
Patrick Mezard
test-repair-strip: turn into new style test
r14022 00changelog.i
00manifest.i
data/b.i
data/c.i
rolling back interrupted transaction
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
Raphaël Gomès
verify: also check dirstate...
r50721 checking dirstate
Meirambek Omyrzak
verify: make output less confusing (issue5924)...
r39525 checked 2 changesets with 2 changes to 2 files
Patrick Mezard
test-repair-strip: turn into new style test
r14022
Mads Kiilerich
tests: add missing trailing 'cd ..'...
r16913 $ cd ..