##// END OF EJS Templates
revlog: subclass the new `repository.iverifyproblem` Protocol class...
revlog: subclass the new `repository.iverifyproblem` Protocol class This is the same transformation as 3a90a6fd710d did for dirstate, but the CamelCase naming was already cleaned up here. We shouldn't have to explicitly subclass, but I'm doing so to test the interplay of regular attributes and the `attrs` class. Also, PyCharm has a nifty feature that puts a jump point in the gutter to navigate back and forth between the base class and subclasses (and override functions and base class functions) when there's an explicit subclassing. Additionally, PyCharm will immediately flag signature mismatches without a 40m pytype run.

File last commit:

r50720:2f2682f4 default
r53365:4ef6dbc2 default
Show More
test-revlog-v2.t
122 lines | 2.8 KiB | text/troff | Tads3Lexer
Gregory Szorc
tests: disable test-revlog-v2 when using simple store...
r37363 #require reporevlogstore
Gregory Szorc
revlog: skeleton support for version 2 revlogs...
r32697 A repo with unknown revlogv2 requirement string cannot be opened
$ hg init invalidreq
$ cd invalidreq
$ echo exp-revlogv2.unknown >> .hg/requires
$ hg log
Martin von Zweigbergk
errors: remove trailing "!" from some error messages for consistency...
r46518 abort: repository requires features unknown to this Mercurial: exp-revlogv2.unknown
Gregory Szorc
revlog: skeleton support for version 2 revlogs...
r32697 (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
[255]
$ cd ..
Can create and open repo with revlog v2 requirement
$ cat >> $HGRCPATH << EOF
> [experimental]
> revlogv2 = enable-unstable-format-and-corrupt-my-data
> EOF
revlogv2: also test that local clone works...
r48242 $ hg init new-repo
$ cd new-repo
test: simpler requirement matching in test-revlog-v2.t...
r49505 $ hg debugrequires | grep revlogv2
Raphaël Gomès
revlog: introduce v2 format...
r47438 exp-revlogv2.2
test: simpler requirement matching in test-revlog-v2.t...
r49505 dirstate-v2 (dirstate-v2 !)
Gregory Szorc
revlog: skeleton support for version 2 revlogs...
r32697
$ hg log
Unknown flags to revlog are rejected
>>> with open('.hg/store/00changelog.i', 'wb') as fh:
Joerg Sonnenberger
tests: make flag parsing test more future safe...
r45929 ... fh.write(b'\xff\x00\xde\xad') and None
Gregory Szorc
revlog: skeleton support for version 2 revlogs...
r32697
$ hg log
revlog: use revlog.display_id in format related errors...
r47928 abort: unknown flags (0xff00) in version 57005 revlog 00changelog
Martin von Zweigbergk
errors: use detailed exit code 50 for StorageError...
r46732 [50]
Gregory Szorc
revlog: skeleton support for version 2 revlogs...
r32697
$ cd ..
Writing a simple revlog v2 works
$ hg init simple
$ cd simple
$ touch foo
$ hg -q commit -A -m initial
$ hg log
changeset: 0:96ee1d7354c4
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: initial
revlogv2: use a unique filename for data...
r48115
Gregory Szorc
revlog: always enable generaldelta on version 2 revlogs...
r41238 Header written as expected
Gregory Szorc
revlog: skeleton support for version 2 revlogs...
r32697
$ f --hexdump --bytes 4 .hg/store/00changelog.i
.hg/store/00changelog.i:
revlogv2: no longer attempt to use inline for new revlog...
r48035 0000: 00 00 de ad |....|
Gregory Szorc
revlog: skeleton support for version 2 revlogs...
r32697
$ f --hexdump --bytes 4 .hg/store/data/foo.i
.hg/store/data/foo.i:
revlogv2: no longer attempt to use inline for new revlog...
r48035 0000: 00 00 de ad |....|
revlogv2: use a unique filename for index...
r48114
revlogv2: make sure bundling pick a compatible bundle format...
r48133 Bundle use a compatible changegroup format
------------------------------------------
$ hg bundle --all ../basic.hg
1 changesets found
$ hg debugbundle --spec ../basic.hg
bzip2-v2
revlogv2: use a unique filename for index...
r48114 The expected files are generated
--------------------------------
We should have have:
- a docket
- a index file with a unique name
- a data file
$ ls .hg/store/00changelog* .hg/store/00manifest*
revlog: store sidedata in their own file...
r48181 .hg/store/00changelog-1335303a.sda
.hg/store/00changelog-6b8ab34b.idx
.hg/store/00changelog-b875dfc5.dat
revlogv2: use a unique filename for index...
r48114 .hg/store/00changelog.i
revlog: store sidedata in their own file...
r48181 .hg/store/00manifest-05a21d65.idx
.hg/store/00manifest-43c37dde.dat
.hg/store/00manifest-e2c9362a.sda
revlogv2: use a unique filename for index...
r48114 .hg/store/00manifest.i
revlogv2: also test that local clone works...
r48242
Local clone works
-----------------
$ hg clone . ../cloned-repo
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg tip | tee ../tip-new
changeset: 0:96ee1d7354c4
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: initial
$ hg tip -R ../cloned-repo | tee ../tip-cloned
changeset: 0:96ee1d7354c4
tag: tip
user: test
date: Thu Jan 01 00:00:00 1970 +0000
summary: initial
The two repository should be identical, this diff MUST be empty
$ cmp ../tip-new ../tip-cloned || diff -U8 ../tip-new ../tip-cloned
revlogv2: fix `hg verify` with revlog v2...
r48243
hg verify should be happy
-------------------------
Raphaël Gomès
tests: use the `--quiet` flag for verify when applicable...
r50720 $ hg verify -q
revlogv2: fix `hg verify` with revlog v2...
r48243
Raphaël Gomès
tests: use the `--quiet` flag for verify when applicable...
r50720 $ hg verify -R ../cloned-repo -q