##// END OF EJS Templates
share: make it possible to control the working copy format variant...
share: make it possible to control the working copy format variant A share will use the same format as its source for the store, but there are no reason to not lets it control the working copy variant at creation time. So we make it so. Differential Revision: https://phab.mercurial-scm.org/D11892

File last commit:

r49295:5e654214 default
r49297:bf2738e0 default
Show More
test-revlog-v2.t
139 lines | 3.3 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: use `hg debugrequires` instead of `cat` in some tests...
r49295 $ hg debugrequires
Gregory Szorc
revlog: skeleton support for version 2 revlogs...
r32697 dotencode
Raphaël Gomès
dirstate-v2: fix confusion between requirement and format config variable...
r49142 dirstate-v2 (dirstate-v2 !)
Raphaël Gomès
revlog: introduce v2 format...
r47438 exp-revlogv2.2
Gregory Szorc
revlog: skeleton support for version 2 revlogs...
r32697 fncache
requirements: no longer drop `generaldelta` requirement with revlogv2...
r47995 generaldelta
persistent-nodemap: enable the feature by default when using Rust...
r47646 persistent-nodemap (rust !)
revlog-compression: use zstd by default (if available)...
r47636 revlog-compression-zstd (zstd !)
Boris Feld
test: enable sparse-revlog for test-revlog-v2.t...
r40942 sparserevlog
Gregory Szorc
revlog: skeleton support for version 2 revlogs...
r32697 store
$ 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
-------------------------
$ hg verify
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
checked 1 changesets with 1 changes to 1 files
$ hg verify -R ../cloned-repo
checking changesets
checking manifests
crosschecking files in changesets and manifests
checking files
checked 1 changesets with 1 changes to 1 files