The feature have been around for a year (4 version) and is quite important.
Lets make it enabled by default.
durin42 | |
Alphare |
hg-reviewers |
The feature have been around for a year (4 version) and is quite important.
Lets make it enabled by default.
Automatic diff as part of commit; lint not applicable. |
Automatic diff as part of commit; unit tests not applicable. |
The change itself is a good idea, aside from my inline comments
relnotes/next | ||
---|---|---|
9 | repositories more consistent across repositories? I'm not 100% sure what the original intention was | |
11 | What this the intended meaning (+typos)? "This introduces a behavior change as shares from repositories using the new variant will also use their main repository's configuration" |
relnotes/next | ||
---|---|---|
11 | "This introduce a behavior changes as shares from repository using the Our messages crossed, we should now be good with this change |
Path | Packages | |||
---|---|---|---|---|
M | mercurial/configitems.py (2 lines) | |||
M | mercurial/helptext/config.txt (2 lines) | |||
M | mercurial/upgrade_utils/actions.py (2 lines) | |||
M | relnotes/next (14 lines) | |||
M | tests/test-empty.t (6 lines) | |||
M | tests/test-fncache.t (1 line) | |||
M | tests/test-hardlinks.t (9 lines) | |||
M | tests/test-hook.t (1 line) | |||
M | tests/test-inherit-mode.t (4 lines) | |||
M | tests/test-init.t (7 lines) | |||
M | tests/test-lfconvert.t (1 line) | |||
M | tests/test-narrow-clone-no-ellipsis.t (1 line) | |||
M | tests/test-narrow-clone-stream.t (2 lines) | |||
M | tests/test-narrow-clone.t (1 line) | |||
M | tests/test-narrow-sparse.t (1 line) | |||
M | tests/test-persistent-nodemap.t (4 lines) | |||
M | tests/test-remotefilelog-clone-tree.t (3 lines) | |||
M | tests/test-remotefilelog-clone.t (3 lines) | |||
M | tests/test-remotefilelog-log.t (1 line) | |||
M | tests/test-requires.t (1 line) | |||
M | tests/test-rhg.t (1 line) | |||
M | tests/test-sparse-requirement.t (3 lines) | |||
M | tests/test-sqlitestore.t (4 lines) | |||
M | tests/test-static-http.t (5 lines) | |||
M | tests/test-upgrade-repo.t (185 lines) |
b'format', | b'format', | ||||
b'exp-use-copies-side-data-changeset', | b'exp-use-copies-side-data-changeset', | ||||
default=False, | default=False, | ||||
experimental=True, | experimental=True, | ||||
) | ) | ||||
coreconfigitem( | coreconfigitem( | ||||
b'format', | b'format', | ||||
b'use-share-safe', | b'use-share-safe', | ||||
default=False, | default=True, | ||||
) | ) | ||||
coreconfigitem( | coreconfigitem( | ||||
b'format', | b'format', | ||||
b'internal-phase', | b'internal-phase', | ||||
default=False, | default=False, | ||||
experimental=True, | experimental=True, | ||||
) | ) | ||||
coreconfigitem( | coreconfigitem( |
Beware that existing shares will not be upgraded/downgraded, and by | Beware that existing shares will not be upgraded/downgraded, and by | ||||
default, Mercurial will refuse to interact with them until the mismatch | default, Mercurial will refuse to interact with them until the mismatch | ||||
is resolved. See :hg:`help config share.safe-mismatch.source-safe` and | is resolved. See :hg:`help config share.safe-mismatch.source-safe` and | ||||
:hg:`help config share.safe-mismatch.source-not-safe` for details. | :hg:`help config share.safe-mismatch.source-not-safe` for details. | ||||
Introduced in Mercurial 5.7. | Introduced in Mercurial 5.7. | ||||
Disabled by default. | Enabled by default in Mercurial 6.1. | ||||
``usestore`` | ``usestore`` | ||||
Enable or disable the "store" repository format which improves | Enable or disable the "store" repository format which improves | ||||
compatibility with systems that fold case or otherwise mangle | compatibility with systems that fold case or otherwise mangle | ||||
filenames. Disabling this option will allow you to store longer filenames | filenames. Disabling this option will allow you to store longer filenames | ||||
in some situations at the expense of compatibility. | in some situations at the expense of compatibility. | ||||
Repositories with this on-disk format require Mercurial version 0.9.4. | Repositories with this on-disk format require Mercurial version 0.9.4. |
) | ) | ||||
@registerformatvariant | @registerformatvariant | ||||
class sharesafe(requirementformatvariant): | class sharesafe(requirementformatvariant): | ||||
name = b'share-safe' | name = b'share-safe' | ||||
_requirement = requirements.SHARESAFE_REQUIREMENT | _requirement = requirements.SHARESAFE_REQUIREMENT | ||||
default = False | default = True | ||||
description = _( | description = _( | ||||
b'old shared repositories do not share source repository ' | b'old shared repositories do not share source repository ' | ||||
b'requirements and config. This leads to various problems ' | b'requirements and config. This leads to various problems ' | ||||
b'when the source repository format is upgraded or some new ' | b'when the source repository format is upgraded or some new ' | ||||
b'extensions are enabled.' | b'extensions are enabled.' | ||||
) | ) | ||||
$ ls .hg | $ ls .hg | ||||
00changelog.i | 00changelog.i | ||||
cache | cache | ||||
requires | requires | ||||
store | store | ||||
wcache | wcache | ||||
Should be empty: | Should be empty (except for the "basic" requires): | ||||
$ ls .hg/store | $ ls .hg/store | ||||
requires | |||||
Poke at a clone: | Poke at a clone: | ||||
$ cd .. | $ cd .. | ||||
$ hg clone a b | $ hg clone a b | ||||
updating to branch default | updating to branch default | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd b | $ cd b | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
checked 0 changesets with 0 changes to 0 files | checked 0 changesets with 0 changes to 0 files | ||||
$ ls .hg | $ ls .hg | ||||
00changelog.i | 00changelog.i | ||||
cache | cache | ||||
dirstate | dirstate | ||||
hgrc | hgrc | ||||
requires | requires | ||||
store | store | ||||
wcache | wcache | ||||
Should be empty: | Should be empty (except for the "basic" requires): | ||||
$ ls .hg/store | $ ls .hg/store | ||||
requires | |||||
$ cd .. | $ cd .. |
.hg/requires | .hg/requires | ||||
.hg/store | .hg/store | ||||
.hg/store/00changelog.i | .hg/store/00changelog.i | ||||
.hg/store/00manifest.i | .hg/store/00manifest.i | ||||
.hg/store/data | .hg/store/data | ||||
.hg/store/data/tst.d.hg | .hg/store/data/tst.d.hg | ||||
.hg/store/data/tst.d.hg/_foo.i | .hg/store/data/tst.d.hg/_foo.i | ||||
.hg/store/phaseroots | .hg/store/phaseroots | ||||
.hg/store/requires | |||||
.hg/store/undo | .hg/store/undo | ||||
.hg/store/undo.backupfiles | .hg/store/undo.backupfiles | ||||
.hg/store/undo.phaseroots | .hg/store/undo.phaseroots | ||||
.hg/undo.backup.dirstate | .hg/undo.backup.dirstate | ||||
.hg/undo.bookmarks | .hg/undo.bookmarks | ||||
.hg/undo.branch | .hg/undo.branch | ||||
.hg/undo.desc | .hg/undo.desc | ||||
.hg/undo.dirstate | .hg/undo.dirstate |
$ nlinksdir r1/.hg/store | $ nlinksdir r1/.hg/store | ||||
1 r1/.hg/store/00changelog.i | 1 r1/.hg/store/00changelog.i | ||||
1 r1/.hg/store/00manifest.i | 1 r1/.hg/store/00manifest.i | ||||
1 r1/.hg/store/data/d1/f2.i | 1 r1/.hg/store/data/d1/f2.i | ||||
1 r1/.hg/store/data/f1.i | 1 r1/.hg/store/data/f1.i | ||||
1 r1/.hg/store/fncache (repofncache !) | 1 r1/.hg/store/fncache (repofncache !) | ||||
1 r1/.hg/store/phaseroots | 1 r1/.hg/store/phaseroots | ||||
1 r1/.hg/store/requires | |||||
1 r1/.hg/store/undo | 1 r1/.hg/store/undo | ||||
1 r1/.hg/store/undo.backup.fncache (repofncache !) | 1 r1/.hg/store/undo.backup.fncache (repofncache !) | ||||
1 r1/.hg/store/undo.backupfiles | 1 r1/.hg/store/undo.backupfiles | ||||
1 r1/.hg/store/undo.phaseroots | 1 r1/.hg/store/undo.phaseroots | ||||
Create hardlinked clone r2: | Create hardlinked clone r2: | ||||
$ nlinksdir r1/.hg/store | $ nlinksdir r1/.hg/store | ||||
2 r1/.hg/store/00changelog.i | 2 r1/.hg/store/00changelog.i | ||||
2 r1/.hg/store/00manifest.i | 2 r1/.hg/store/00manifest.i | ||||
2 r1/.hg/store/data/d1/f2.i | 2 r1/.hg/store/data/d1/f2.i | ||||
2 r1/.hg/store/data/f1.i | 2 r1/.hg/store/data/f1.i | ||||
1 r1/.hg/store/fncache (repofncache !) | 1 r1/.hg/store/fncache (repofncache !) | ||||
1 r1/.hg/store/phaseroots | 1 r1/.hg/store/phaseroots | ||||
1 r1/.hg/store/requires | |||||
1 r1/.hg/store/undo | 1 r1/.hg/store/undo | ||||
1 r1/.hg/store/undo.backup.fncache (repofncache !) | 1 r1/.hg/store/undo.backup.fncache (repofncache !) | ||||
1 r1/.hg/store/undo.backupfiles | 1 r1/.hg/store/undo.backupfiles | ||||
1 r1/.hg/store/undo.phaseroots | 1 r1/.hg/store/undo.phaseroots | ||||
$ nlinksdir r2/.hg/store | $ nlinksdir r2/.hg/store | ||||
2 r2/.hg/store/00changelog.i | 2 r2/.hg/store/00changelog.i | ||||
2 r2/.hg/store/00manifest.i | 2 r2/.hg/store/00manifest.i | ||||
2 r2/.hg/store/data/d1/f2.i | 2 r2/.hg/store/data/d1/f2.i | ||||
2 r2/.hg/store/data/f1.i | 2 r2/.hg/store/data/f1.i | ||||
1 r2/.hg/store/fncache (repofncache !) | 1 r2/.hg/store/fncache (repofncache !) | ||||
1 r2/.hg/store/requires | |||||
Repo r3 should not be hardlinked: | Repo r3 should not be hardlinked: | ||||
$ nlinksdir r3/.hg/store | $ nlinksdir r3/.hg/store | ||||
1 r3/.hg/store/00changelog.i | 1 r3/.hg/store/00changelog.i | ||||
1 r3/.hg/store/00manifest.i | 1 r3/.hg/store/00manifest.i | ||||
1 r3/.hg/store/data/d1/f2.i | 1 r3/.hg/store/data/d1/f2.i | ||||
1 r3/.hg/store/data/f1.i | 1 r3/.hg/store/data/f1.i | ||||
1 r3/.hg/store/fncache (repofncache !) | 1 r3/.hg/store/fncache (repofncache !) | ||||
1 r3/.hg/store/phaseroots | 1 r3/.hg/store/phaseroots | ||||
1 r3/.hg/store/requires | |||||
1 r3/.hg/store/undo | 1 r3/.hg/store/undo | ||||
1 r3/.hg/store/undo.backupfiles | 1 r3/.hg/store/undo.backupfiles | ||||
1 r3/.hg/store/undo.phaseroots | 1 r3/.hg/store/undo.phaseroots | ||||
Create a non-inlined filelog in r3: | Create a non-inlined filelog in r3: | ||||
$ cd r3/d1 | $ cd r3/d1 | ||||
$ nlinksdir r3/.hg/store | $ nlinksdir r3/.hg/store | ||||
1 r3/.hg/store/00changelog.i | 1 r3/.hg/store/00changelog.i | ||||
1 r3/.hg/store/00manifest.i | 1 r3/.hg/store/00manifest.i | ||||
1 r3/.hg/store/data/d1/f2.d | 1 r3/.hg/store/data/d1/f2.d | ||||
1 r3/.hg/store/data/d1/f2.i | 1 r3/.hg/store/data/d1/f2.i | ||||
1 r3/.hg/store/data/f1.i | 1 r3/.hg/store/data/f1.i | ||||
1 r3/.hg/store/fncache (repofncache !) | 1 r3/.hg/store/fncache (repofncache !) | ||||
1 r3/.hg/store/phaseroots | 1 r3/.hg/store/phaseroots | ||||
1 r3/.hg/store/requires | |||||
1 r3/.hg/store/undo | 1 r3/.hg/store/undo | ||||
1 r3/.hg/store/undo.backup.fncache (repofncache !) | 1 r3/.hg/store/undo.backup.fncache (repofncache !) | ||||
1 r3/.hg/store/undo.backup.phaseroots | 1 r3/.hg/store/undo.backup.phaseroots | ||||
1 r3/.hg/store/undo.backupfiles | 1 r3/.hg/store/undo.backupfiles | ||||
1 r3/.hg/store/undo.phaseroots | 1 r3/.hg/store/undo.phaseroots | ||||
Push to repo r1 should break up most hardlinks in r2: | Push to repo r1 should break up most hardlinks in r2: | ||||
$ cd .. | $ cd .. | ||||
$ nlinksdir r2/.hg/store | $ nlinksdir r2/.hg/store | ||||
1 r2/.hg/store/00changelog.i | 1 r2/.hg/store/00changelog.i | ||||
1 r2/.hg/store/00manifest.i | 1 r2/.hg/store/00manifest.i | ||||
1 r2/.hg/store/data/d1/f2.i | 1 r2/.hg/store/data/d1/f2.i | ||||
2 r2/.hg/store/data/f1.i | 2 r2/.hg/store/data/f1.i | ||||
[12] r2/\.hg/store/fncache (re) (repofncache !) | [12] r2/\.hg/store/fncache (re) (repofncache !) | ||||
1 r2/.hg/store/requires | |||||
#if hardlink-whitelisted repofncache | #if hardlink-whitelisted repofncache | ||||
$ nlinksdir r2/.hg/store/fncache | $ nlinksdir r2/.hg/store/fncache | ||||
1 r2/.hg/store/fncache | 1 r2/.hg/store/fncache | ||||
#endif | #endif | ||||
$ hg -R r2 verify | $ hg -R r2 verify | ||||
checking changesets | checking changesets | ||||
$ cd .. | $ cd .. | ||||
$ nlinksdir r2/.hg/store | $ nlinksdir r2/.hg/store | ||||
1 r2/.hg/store/00changelog.i | 1 r2/.hg/store/00changelog.i | ||||
1 r2/.hg/store/00manifest.i | 1 r2/.hg/store/00manifest.i | ||||
1 r2/.hg/store/data/d1/f2.i | 1 r2/.hg/store/data/d1/f2.i | ||||
1 r2/.hg/store/data/f1.i | 1 r2/.hg/store/data/f1.i | ||||
1 r2/.hg/store/fncache (repofncache !) | 1 r2/.hg/store/fncache (repofncache !) | ||||
1 r2/.hg/store/requires | |||||
#if hardlink-whitelisted repofncache | #if hardlink-whitelisted repofncache | ||||
$ nlinksdir r2/.hg/store/fncache | $ nlinksdir r2/.hg/store/fncache | ||||
1 r2/.hg/store/fncache | 1 r2/.hg/store/fncache | ||||
#endif | #endif | ||||
Create a file which exec permissions we will change | Create a file which exec permissions we will change | ||||
$ cd r3 | $ cd r3 | ||||
2 r4/.hg/store/00changelog.i | 2 r4/.hg/store/00changelog.i | ||||
2 r4/.hg/store/00manifest.i | 2 r4/.hg/store/00manifest.i | ||||
2 r4/.hg/store/data/d1/f2.d | 2 r4/.hg/store/data/d1/f2.d | ||||
2 r4/.hg/store/data/d1/f2.i | 2 r4/.hg/store/data/d1/f2.i | ||||
2 r4/.hg/store/data/f1.i | 2 r4/.hg/store/data/f1.i | ||||
2 r4/.hg/store/data/f3.i | 2 r4/.hg/store/data/f3.i | ||||
2 r4/.hg/store/fncache (repofncache !) | 2 r4/.hg/store/fncache (repofncache !) | ||||
2 r4/.hg/store/phaseroots | 2 r4/.hg/store/phaseroots | ||||
2 r4/.hg/store/requires | |||||
2 r4/.hg/store/undo | 2 r4/.hg/store/undo | ||||
2 r4/.hg/store/undo.backup.fncache (repofncache !) | 2 r4/.hg/store/undo.backup.fncache (repofncache !) | ||||
2 r4/.hg/store/undo.backup.phaseroots | 2 r4/.hg/store/undo.backup.phaseroots | ||||
2 r4/.hg/store/undo.backupfiles | 2 r4/.hg/store/undo.backupfiles | ||||
2 r4/.hg/store/undo.phaseroots | 2 r4/.hg/store/undo.phaseroots | ||||
[24] r4/\.hg/undo\.backup\.dirstate (re) | [24] r4/\.hg/undo\.backup\.dirstate (re) | ||||
2 r4/.hg/undo.bookmarks | 2 r4/.hg/undo.bookmarks | ||||
2 r4/.hg/undo.branch | 2 r4/.hg/undo.branch | ||||
2 r4/.hg/store/00changelog.i | 2 r4/.hg/store/00changelog.i | ||||
2 r4/.hg/store/00manifest.i | 2 r4/.hg/store/00manifest.i | ||||
2 r4/.hg/store/data/d1/f2.d | 2 r4/.hg/store/data/d1/f2.d | ||||
2 r4/.hg/store/data/d1/f2.i | 2 r4/.hg/store/data/d1/f2.i | ||||
2 r4/.hg/store/data/f1.i | 2 r4/.hg/store/data/f1.i | ||||
2 r4/.hg/store/data/f3.i | 2 r4/.hg/store/data/f3.i | ||||
2 r4/.hg/store/fncache | 2 r4/.hg/store/fncache | ||||
2 r4/.hg/store/phaseroots | 2 r4/.hg/store/phaseroots | ||||
2 r4/.hg/store/requires | |||||
2 r4/.hg/store/undo | 2 r4/.hg/store/undo | ||||
2 r4/.hg/store/undo.backup.fncache (repofncache !) | 2 r4/.hg/store/undo.backup.fncache (repofncache !) | ||||
2 r4/.hg/store/undo.backup.phaseroots | 2 r4/.hg/store/undo.backup.phaseroots | ||||
2 r4/.hg/store/undo.backupfiles | 2 r4/.hg/store/undo.backupfiles | ||||
2 r4/.hg/store/undo.phaseroots | 2 r4/.hg/store/undo.phaseroots | ||||
[24] r4/\.hg/undo\.backup\.dirstate (re) | [24] r4/\.hg/undo\.backup\.dirstate (re) | ||||
2 r4/.hg/undo.bookmarks | 2 r4/.hg/undo.bookmarks | ||||
2 r4/.hg/undo.branch | 2 r4/.hg/undo.branch |
$ ls -1 .hg/store/ | $ ls -1 .hg/store/ | ||||
00changelog.i | 00changelog.i | ||||
00manifest.i | 00manifest.i | ||||
data | data | ||||
fncache (repofncache !) | fncache (repofncache !) | ||||
journal.phaseroots | journal.phaseroots | ||||
phaseroots | phaseroots | ||||
requires | |||||
undo | undo | ||||
undo.backup.fncache (repofncache !) | undo.backup.fncache (repofncache !) | ||||
undo.backupfiles | undo.backupfiles | ||||
undo.phaseroots | undo.phaseroots | ||||
precommit hook can prevent commit | precommit hook can prevent commit | ||||
store is setgid | store is setgid | ||||
$ "$PYTHON" ../printmodes.py . | $ "$PYTHON" ../printmodes.py . | ||||
00700 ./.hg/ | 00700 ./.hg/ | ||||
00600 ./.hg/00changelog.i | 00600 ./.hg/00changelog.i | ||||
00770 ./.hg/cache/ | 00770 ./.hg/cache/ | ||||
00600 ./.hg/requires | 00600 ./.hg/requires | ||||
00770 ./.hg/store/ | 00770 ./.hg/store/ | ||||
00600 ./.hg/store/requires | |||||
00770 ./.hg/wcache/ | 00770 ./.hg/wcache/ | ||||
$ mkdir dir | $ mkdir dir | ||||
$ touch foo dir/bar | $ touch foo dir/bar | ||||
$ hg ci -qAm 'add files' | $ hg ci -qAm 'add files' | ||||
after commit | after commit | ||||
working dir files can only be written by the owner | working dir files can only be written by the owner | ||||
00770 ./.hg/store/data/dir/bar/ (reposimplestore !) | 00770 ./.hg/store/data/dir/bar/ (reposimplestore !) | ||||
00660 ./.hg/store/data/dir/bar/b80de5d138758541c5f05265ad144ab9fa86d1db (reposimplestore !) | 00660 ./.hg/store/data/dir/bar/b80de5d138758541c5f05265ad144ab9fa86d1db (reposimplestore !) | ||||
00660 ./.hg/store/data/dir/bar/index (reposimplestore !) | 00660 ./.hg/store/data/dir/bar/index (reposimplestore !) | ||||
00770 ./.hg/store/data/foo/ (reposimplestore !) | 00770 ./.hg/store/data/foo/ (reposimplestore !) | ||||
00660 ./.hg/store/data/foo/b80de5d138758541c5f05265ad144ab9fa86d1db (reposimplestore !) | 00660 ./.hg/store/data/foo/b80de5d138758541c5f05265ad144ab9fa86d1db (reposimplestore !) | ||||
00660 ./.hg/store/data/foo/index (reposimplestore !) | 00660 ./.hg/store/data/foo/index (reposimplestore !) | ||||
00660 ./.hg/store/fncache (repofncache !) | 00660 ./.hg/store/fncache (repofncache !) | ||||
00660 ./.hg/store/phaseroots | 00660 ./.hg/store/phaseroots | ||||
00600 ./.hg/store/requires | |||||
00660 ./.hg/store/undo | 00660 ./.hg/store/undo | ||||
00660 ./.hg/store/undo.backupfiles | 00660 ./.hg/store/undo.backupfiles | ||||
00660 ./.hg/store/undo.phaseroots | 00660 ./.hg/store/undo.phaseroots | ||||
00660 ./.hg/undo.backup.dirstate | 00660 ./.hg/undo.backup.dirstate | ||||
00660 ./.hg/undo.bookmarks | 00660 ./.hg/undo.bookmarks | ||||
00660 ./.hg/undo.branch | 00660 ./.hg/undo.branch | ||||
00660 ./.hg/undo.desc | 00660 ./.hg/undo.desc | ||||
00660 ./.hg/undo.dirstate | 00660 ./.hg/undo.dirstate | ||||
group can write everything | group can write everything | ||||
$ "$PYTHON" ../printmodes.py ../push | $ "$PYTHON" ../printmodes.py ../push | ||||
00770 ../push/.hg/ | 00770 ../push/.hg/ | ||||
00660 ../push/.hg/00changelog.i | 00660 ../push/.hg/00changelog.i | ||||
00770 ../push/.hg/cache/ | 00770 ../push/.hg/cache/ | ||||
00660 ../push/.hg/requires | 00660 ../push/.hg/requires | ||||
00770 ../push/.hg/store/ | 00770 ../push/.hg/store/ | ||||
00660 ../push/.hg/store/requires | |||||
00770 ../push/.hg/wcache/ | 00770 ../push/.hg/wcache/ | ||||
$ umask 077 | $ umask 077 | ||||
$ hg -q push ../push | $ hg -q push ../push | ||||
after push | after push | ||||
group can still write everything | group can still write everything | ||||
00660 ../push/.hg/store/data/foo.i (reporevlogstore !) | 00660 ../push/.hg/store/data/foo.i (reporevlogstore !) | ||||
00770 ../push/.hg/store/data/dir/bar/ (reposimplestore !) | 00770 ../push/.hg/store/data/dir/bar/ (reposimplestore !) | ||||
00660 ../push/.hg/store/data/dir/bar/b80de5d138758541c5f05265ad144ab9fa86d1db (reposimplestore !) | 00660 ../push/.hg/store/data/dir/bar/b80de5d138758541c5f05265ad144ab9fa86d1db (reposimplestore !) | ||||
00660 ../push/.hg/store/data/dir/bar/index (reposimplestore !) | 00660 ../push/.hg/store/data/dir/bar/index (reposimplestore !) | ||||
00770 ../push/.hg/store/data/foo/ (reposimplestore !) | 00770 ../push/.hg/store/data/foo/ (reposimplestore !) | ||||
00660 ../push/.hg/store/data/foo/b80de5d138758541c5f05265ad144ab9fa86d1db (reposimplestore !) | 00660 ../push/.hg/store/data/foo/b80de5d138758541c5f05265ad144ab9fa86d1db (reposimplestore !) | ||||
00660 ../push/.hg/store/data/foo/index (reposimplestore !) | 00660 ../push/.hg/store/data/foo/index (reposimplestore !) | ||||
00660 ../push/.hg/store/fncache (repofncache !) | 00660 ../push/.hg/store/fncache (repofncache !) | ||||
00660 ../push/.hg/store/requires | |||||
00660 ../push/.hg/store/undo | 00660 ../push/.hg/store/undo | ||||
00660 ../push/.hg/store/undo.backupfiles | 00660 ../push/.hg/store/undo.backupfiles | ||||
00660 ../push/.hg/store/undo.phaseroots | 00660 ../push/.hg/store/undo.phaseroots | ||||
00660 ../push/.hg/undo.bookmarks | 00660 ../push/.hg/undo.bookmarks | ||||
00660 ../push/.hg/undo.branch | 00660 ../push/.hg/undo.branch | ||||
00660 ../push/.hg/undo.desc | 00660 ../push/.hg/undo.desc | ||||
00660 ../push/.hg/undo.dirstate | 00660 ../push/.hg/undo.dirstate | ||||
00770 ../push/.hg/wcache/ | 00770 ../push/.hg/wcache/ |
00changelog.i created | 00changelog.i created | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
$ echo this > local/foo | $ echo this > local/foo | ||||
$ hg ci --cwd local -A -m "init" | $ hg ci --cwd local -A -m "init" | ||||
adding foo | adding foo | ||||
test custom revlog chunk cache sizes | test custom revlog chunk cache sizes | ||||
$ checknewrepo old2 | $ checknewrepo old2 | ||||
store created | store created | ||||
00changelog.i created | 00changelog.i created | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
creating repo with format.dotencode=false | creating repo with format.dotencode=false | ||||
$ hg --config format.dotencode=false init old3 | $ hg --config format.dotencode=false init old3 | ||||
$ checknewrepo old3 | $ checknewrepo old3 | ||||
store created | store created | ||||
00changelog.i created | 00changelog.i created | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
creating repo with format.dotencode=false | creating repo with format.dotencode=false | ||||
$ hg --config format.generaldelta=false --config format.usegeneraldelta=false --config format.sparse-revlog=no init old4 | $ hg --config format.generaldelta=false --config format.usegeneraldelta=false --config format.sparse-revlog=no init old4 | ||||
$ checknewrepo old4 | $ checknewrepo old4 | ||||
store created | store created | ||||
00changelog.i created | 00changelog.i created | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
fncache | fncache | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
store | store | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
test failure | test failure | ||||
$ hg init local | $ hg init local | ||||
abort: repository local already exists | abort: repository local already exists | ||||
[255] | [255] | ||||
00changelog.i created | 00changelog.i created | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
prepare test of init of url configured from paths | prepare test of init of url configured from paths | ||||
$ echo '[paths]' >> $HGRCPATH | $ echo '[paths]' >> $HGRCPATH | ||||
$ echo "somewhere = `pwd`/url from paths" >> $HGRCPATH | $ echo "somewhere = `pwd`/url from paths" >> $HGRCPATH | ||||
$ echo "elsewhere = `pwd`/another paths url" >> $HGRCPATH | $ echo "elsewhere = `pwd`/another paths url" >> $HGRCPATH | ||||
init should (for consistency with clone) expand the url | init should (for consistency with clone) expand the url | ||||
$ hg init somewhere | $ hg init somewhere | ||||
$ checknewrepo "url from paths" | $ checknewrepo "url from paths" | ||||
store created | store created | ||||
00changelog.i created | 00changelog.i created | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
verify that clone also expand urls | verify that clone also expand urls | ||||
$ hg clone somewhere elsewhere | $ hg clone somewhere elsewhere | ||||
updating to branch default | updating to branch default | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ checknewrepo "another paths url" | $ checknewrepo "another paths url" | ||||
store created | store created | ||||
00changelog.i created | 00changelog.i created | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
clone bookmarks | clone bookmarks | ||||
$ hg -R local bookmark test | $ hg -R local bookmark test | ||||
$ hg -R local bookmarks | $ hg -R local bookmarks |
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
largefiles | largefiles | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
"lfconvert" includes a newline at the end of the standin files. | "lfconvert" includes a newline at the end of the standin files. | ||||
$ cat .hglf/large .hglf/sub/maybelarge.dat | $ cat .hglf/large .hglf/sub/maybelarge.dat | ||||
2e000fa7e85759c7f4c254d4d9c33ef481e459a7 | 2e000fa7e85759c7f4c254d4d9c33ef481e459a7 | ||||
34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c | 34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c |
$ hg debugrequires | grep -v generaldelta | $ hg debugrequires | grep -v generaldelta | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
fncache | fncache | ||||
narrowhg-experimental | narrowhg-experimental | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
$ hg tracked | $ hg tracked | ||||
I path:dir/src/f10 | I path:dir/src/f10 | ||||
$ hg update | $ hg update | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved |
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
fncache (tree !) | fncache (tree !) | ||||
fncache (flat-fncache !) | fncache (flat-fncache !) | ||||
generaldelta | generaldelta | ||||
narrowhg-experimental | narrowhg-experimental | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
treemanifest (tree !) | treemanifest (tree !) | ||||
Making sure store has the required files | Making sure store has the required files | ||||
$ ls .hg/store/ | $ ls .hg/store/ | ||||
00changelog.i | 00changelog.i | ||||
00manifest.i | 00manifest.i | ||||
data | data | ||||
fncache (tree !) | fncache (tree !) | ||||
fncache (flat-fncache !) | fncache (flat-fncache !) | ||||
meta (tree !) | meta (tree !) | ||||
narrowspec | narrowspec | ||||
requires | |||||
undo | undo | ||||
undo.backupfiles | undo.backupfiles | ||||
undo.narrowspec | undo.narrowspec | ||||
undo.phaseroots | undo.phaseroots | ||||
Checking that repository has all the required data and not broken | Checking that repository has all the required data and not broken | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests (tree !) | checking directory manifests (tree !) | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
checked 40 changesets with 1 changes to 1 files | checked 40 changesets with 1 changes to 1 files |
$ hg debugrequires | grep -v generaldelta | $ hg debugrequires | grep -v generaldelta | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
fncache | fncache | ||||
narrowhg-experimental | narrowhg-experimental | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
$ hg tracked | $ hg tracked | ||||
I path:dir/src/f10 | I path:dir/src/f10 | ||||
$ hg tracked | $ hg tracked | ||||
I path:dir/src/f10 | I path:dir/src/f10 |
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
narrowhg-experimental | narrowhg-experimental | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
treemanifest (tree !) | treemanifest (tree !) | ||||
$ hg debugrebuilddirstate | $ hg debugrebuilddirstate | ||||
We only make the following assertions for the flat test case since in the | We only make the following assertions for the flat test case since in the | ||||
treemanifest test case debugsparse fails with "path ends in directory | treemanifest test case debugsparse fails with "path ends in directory |
> use-persistent-nodemap=no | > use-persistent-nodemap=no | ||||
> EOF | > EOF | ||||
$ hg debugformat -v | $ hg debugformat -v | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: yes yes yes | fncache: yes yes yes | ||||
dirstate-v2: no no no | dirstate-v2: no no no | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: yes yes no | share-safe: yes yes yes | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: yes no no | persistent-nodemap: yes no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
changelog-v2: no no no | changelog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib (no-zstd !) | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | compression: zstd zstd zstd (zstd !) | ||||
> use-persistent-nodemap=yes | > use-persistent-nodemap=yes | ||||
> EOF | > EOF | ||||
$ hg debugformat -v | $ hg debugformat -v | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: yes yes yes | fncache: yes yes yes | ||||
dirstate-v2: no no no | dirstate-v2: no no no | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: yes yes no | share-safe: yes yes yes | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no yes no | persistent-nodemap: no yes no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
changelog-v2: no no no | changelog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib (no-zstd !) | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | compression: zstd zstd zstd (zstd !) |
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
exp-remotefilelog-repo-req-1 | exp-remotefilelog-repo-req-1 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
treemanifest | treemanifest | ||||
$ find .hg/store/meta | sort | $ find .hg/store/meta | sort | ||||
.hg/store/meta | .hg/store/meta | ||||
.hg/store/meta/_a | .hg/store/meta/_a | ||||
.hg/store/meta/_a/00manifest.i | .hg/store/meta/_a/00manifest.i | ||||
.hg/store/meta/_a/_b | .hg/store/meta/_a/_b | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
exp-remotefilelog-repo-req-1 | exp-remotefilelog-repo-req-1 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
treemanifest | treemanifest | ||||
$ ls .hg/store/data | $ ls .hg/store/data | ||||
ca31988f085bfb945cb8115b78fabdee40f741aa | ca31988f085bfb945cb8115b78fabdee40f741aa | ||||
$ hg update | $ hg update | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
exp-remotefilelog-repo-req-1 | exp-remotefilelog-repo-req-1 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
treemanifest | treemanifest |
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
exp-remotefilelog-repo-req-1 | exp-remotefilelog-repo-req-1 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ hg update | $ hg update | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob) | 1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over *s (glob) | ||||
$ cat x | $ cat x | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
exp-remotefilelog-repo-req-1 | exp-remotefilelog-repo-req-1 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ ls .hg/store/data | $ ls .hg/store/data | ||||
4a0a19218e082a343a1b17e5333409af9d98f0f5 | 4a0a19218e082a343a1b17e5333409af9d98f0f5 | ||||
$ hg update | $ hg update | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
exp-remotefilelog-repo-req-1 | exp-remotefilelog-repo-req-1 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store |
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
exp-remotefilelog-repo-req-1 | exp-remotefilelog-repo-req-1 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ hg update | $ hg update | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) | 2 files fetched over 1 fetches - (2 misses, 0.00% hit ratio) over *s (glob) | ||||
Log on a file without -f | Log on a file without -f |
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
featuresetup-test | featuresetup-test | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ hg -R supported status | $ hg -R supported status | ||||
$ hg init push-dst | $ hg init push-dst | ||||
$ hg -R supported push push-dst | $ hg -R supported push push-dst | ||||
pushing to push-dst | pushing to push-dst | ||||
abort: required features are not supported in the destination: featuresetup-test | abort: required features are not supported in the destination: featuresetup-test |
Requirements | Requirements | ||||
$ $NO_FALLBACK rhg debugrequirements | $ $NO_FALLBACK rhg debugrequirements | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap | persistent-nodemap | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ echo indoor-pool >> .hg/requires | $ echo indoor-pool >> .hg/requires | ||||
$ $NO_FALLBACK rhg files | $ $NO_FALLBACK rhg files | ||||
unsupported feature: repository requires feature unknown to this Mercurial: indoor-pool | unsupported feature: repository requires feature unknown to this Mercurial: indoor-pool | ||||
[252] | [252] | ||||
$ hg debugrequires | $ hg debugrequires | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
$ hg debugsparse --config extensions.sparse= --enable-profile frontend.sparse | $ hg debugsparse --config extensions.sparse= --enable-profile frontend.sparse | ||||
$ ls -A | $ ls -A | ||||
.hg | .hg | ||||
a.html | a.html | ||||
b.html | b.html | ||||
Requirement for sparse added when sparse is enabled | Requirement for sparse added when sparse is enabled | ||||
$ hg debugrequires --config extensions.sparse= | $ hg debugrequires --config extensions.sparse= | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
exp-sparse | exp-sparse | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
Client without sparse enabled reacts properly | Client without sparse enabled reacts properly | ||||
$ hg files | $ hg files | ||||
abort: repository is using sparse feature but sparse is not enabled; enable the "sparse" extensions to access | abort: repository is using sparse feature but sparse is not enabled; enable the "sparse" extensions to access | ||||
[255] | [255] | ||||
Requirement for sparse is removed when sparse is disabled | Requirement for sparse is removed when sparse is disabled | ||||
$ hg debugsparse --reset --config extensions.sparse= | $ hg debugsparse --reset --config extensions.sparse= | ||||
$ hg debugrequires | $ hg debugrequires | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
And client without sparse can access | And client without sparse can access | ||||
$ hg files | $ hg files | ||||
a.html | a.html | ||||
b.html | b.html | ||||
c.py | c.py | ||||
d.py | d.py | ||||
frontend.sparse | frontend.sparse |
$ hg debugrequires -R empty-no-sqlite | $ hg debugrequires -R empty-no-sqlite | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
storage.new-repo-backend=sqlite is recognized | storage.new-repo-backend=sqlite is recognized | ||||
$ hg --config storage.new-repo-backend=sqlite init empty-sqlite | $ hg --config storage.new-repo-backend=sqlite init empty-sqlite | ||||
$ hg debugrequires -R empty-sqlite | $ hg debugrequires -R empty-sqlite | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
exp-sqlite-001 | exp-sqlite-001 | ||||
exp-sqlite-comp-001=zstd (zstd !) | exp-sqlite-comp-001=zstd (zstd !) | ||||
exp-sqlite-comp-001=$BUNDLE2_COMPRESSIONS$ (no-zstd !) | exp-sqlite-comp-001=$BUNDLE2_COMPRESSIONS$ (no-zstd !) | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ cat >> $HGRCPATH << EOF | $ cat >> $HGRCPATH << EOF | ||||
> [storage] | > [storage] | ||||
> new-repo-backend = sqlite | > new-repo-backend = sqlite | ||||
> EOF | > EOF | ||||
Can force compression to zlib | Can force compression to zlib | ||||
$ hg --config storage.sqlite.compression=zlib init empty-zlib | $ hg --config storage.sqlite.compression=zlib init empty-zlib | ||||
$ hg debugrequires -R empty-zlib | $ hg debugrequires -R empty-zlib | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
exp-sqlite-001 | exp-sqlite-001 | ||||
exp-sqlite-comp-001=$BUNDLE2_COMPRESSIONS$ | exp-sqlite-comp-001=$BUNDLE2_COMPRESSIONS$ | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
Can force compression to none | Can force compression to none | ||||
$ hg --config storage.sqlite.compression=none init empty-none | $ hg --config storage.sqlite.compression=none init empty-none | ||||
$ hg debugrequires -R empty-none | $ hg debugrequires -R empty-none | ||||
dotencode | dotencode | ||||
dirstate-v2 (dirstate-v2 !) | dirstate-v2 (dirstate-v2 !) | ||||
exp-sqlite-001 | exp-sqlite-001 | ||||
exp-sqlite-comp-001=none | exp-sqlite-comp-001=none | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
Can make a local commit | Can make a local commit | ||||
$ hg init local-commit | $ hg init local-commit | ||||
$ cd local-commit | $ cd local-commit | ||||
$ echo 0 > foo | $ echo 0 > foo |
/.hg/requires | /.hg/requires | ||||
/.hg/store/00changelog.i | /.hg/store/00changelog.i | ||||
/.hg/store/00manifest.i | /.hg/store/00manifest.i | ||||
/.hg/store/data/%7E2ehgsub.i (no-py37 !) | /.hg/store/data/%7E2ehgsub.i (no-py37 !) | ||||
/.hg/store/data/%7E2ehgsubstate.i (no-py37 !) | /.hg/store/data/%7E2ehgsubstate.i (no-py37 !) | ||||
/.hg/store/data/a.i | /.hg/store/data/a.i | ||||
/.hg/store/data/~2ehgsub.i (py37 !) | /.hg/store/data/~2ehgsub.i (py37 !) | ||||
/.hg/store/data/~2ehgsubstate.i (py37 !) | /.hg/store/data/~2ehgsubstate.i (py37 !) | ||||
/.hg/store/requires | |||||
/notarepo/.hg/00changelog.i | /notarepo/.hg/00changelog.i | ||||
/notarepo/.hg/requires | /notarepo/.hg/requires | ||||
/remote-with-names/.hg/bookmarks | /remote-with-names/.hg/bookmarks | ||||
/remote-with-names/.hg/bookmarks.current | /remote-with-names/.hg/bookmarks.current | ||||
/remote-with-names/.hg/cache/branch2-served | /remote-with-names/.hg/cache/branch2-served | ||||
/remote-with-names/.hg/cache/hgtagsfnodes1 | /remote-with-names/.hg/cache/hgtagsfnodes1 | ||||
/remote-with-names/.hg/cache/tags2-served | /remote-with-names/.hg/cache/tags2-served | ||||
/remote-with-names/.hg/dirstate | /remote-with-names/.hg/dirstate | ||||
/remote-with-names/.hg/localtags | /remote-with-names/.hg/localtags | ||||
/remote-with-names/.hg/requires | /remote-with-names/.hg/requires | ||||
/remote-with-names/.hg/store/00changelog.i | /remote-with-names/.hg/store/00changelog.i | ||||
/remote-with-names/.hg/store/00manifest.i | /remote-with-names/.hg/store/00manifest.i | ||||
/remote-with-names/.hg/store/data/%7E2ehgtags.i (no-py37 !) | /remote-with-names/.hg/store/data/%7E2ehgtags.i (no-py37 !) | ||||
/remote-with-names/.hg/store/data/foo.i | /remote-with-names/.hg/store/data/foo.i | ||||
/remote-with-names/.hg/store/data/~2ehgtags.i (py37 !) | /remote-with-names/.hg/store/data/~2ehgtags.i (py37 !) | ||||
/remote-with-names/.hg/store/requires | |||||
/remote/.hg/bookmarks | /remote/.hg/bookmarks | ||||
/remote/.hg/bookmarks.current | /remote/.hg/bookmarks.current | ||||
/remote/.hg/cache/branch2-base | /remote/.hg/cache/branch2-base | ||||
/remote/.hg/cache/branch2-immutable | /remote/.hg/cache/branch2-immutable | ||||
/remote/.hg/cache/branch2-served | /remote/.hg/cache/branch2-served | ||||
/remote/.hg/cache/hgtagsfnodes1 | /remote/.hg/cache/hgtagsfnodes1 | ||||
/remote/.hg/cache/rbc-names-v1 | /remote/.hg/cache/rbc-names-v1 | ||||
/remote/.hg/cache/tags2-served | /remote/.hg/cache/tags2-served | ||||
/remote/.hg/dirstate | /remote/.hg/dirstate | ||||
/remote/.hg/localtags | /remote/.hg/localtags | ||||
/remote/.hg/requires | /remote/.hg/requires | ||||
/remote/.hg/store/00changelog.i | /remote/.hg/store/00changelog.i | ||||
/remote/.hg/store/00manifest.i | /remote/.hg/store/00manifest.i | ||||
/remote/.hg/store/data/%7E2edotfile%20with%20spaces.i (no-py37 !) | /remote/.hg/store/data/%7E2edotfile%20with%20spaces.i (no-py37 !) | ||||
/remote/.hg/store/data/%7E2ehgtags.i (no-py37 !) | /remote/.hg/store/data/%7E2ehgtags.i (no-py37 !) | ||||
/remote/.hg/store/data/bar.i | /remote/.hg/store/data/bar.i | ||||
/remote/.hg/store/data/quux.i | /remote/.hg/store/data/quux.i | ||||
/remote/.hg/store/data/~2edotfile%20with%20spaces.i (py37 !) | /remote/.hg/store/data/~2edotfile%20with%20spaces.i (py37 !) | ||||
/remote/.hg/store/data/~2ehgtags.i (py37 !) | /remote/.hg/store/data/~2ehgtags.i (py37 !) | ||||
/remote/.hg/store/requires | |||||
/remotempty/.hg/bookmarks | /remotempty/.hg/bookmarks | ||||
/remotempty/.hg/bookmarks.current | /remotempty/.hg/bookmarks.current | ||||
/remotempty/.hg/dirstate | /remotempty/.hg/dirstate | ||||
/remotempty/.hg/requires | /remotempty/.hg/requires | ||||
/remotempty/.hg/store/00changelog.i | /remotempty/.hg/store/00changelog.i | ||||
/remotempty/.hg/store/00manifest.i | /remotempty/.hg/store/00manifest.i | ||||
/remotempty/.hg/store/requires | |||||
/sub/.hg/bookmarks | /sub/.hg/bookmarks | ||||
/sub/.hg/bookmarks.current | /sub/.hg/bookmarks.current | ||||
/sub/.hg/cache/hgtagsfnodes1 | /sub/.hg/cache/hgtagsfnodes1 | ||||
/sub/.hg/dirstate | /sub/.hg/dirstate | ||||
/sub/.hg/requires | /sub/.hg/requires | ||||
/sub/.hg/store/00changelog.i | /sub/.hg/store/00changelog.i | ||||
/sub/.hg/store/00manifest.i | /sub/.hg/store/00manifest.i | ||||
/sub/.hg/store/data/%7E2ehgtags.i (no-py37 !) | /sub/.hg/store/data/%7E2ehgtags.i (no-py37 !) | ||||
/sub/.hg/store/data/test.i | /sub/.hg/store/data/test.i | ||||
/sub/.hg/store/data/~2ehgtags.i (py37 !) | /sub/.hg/store/data/~2ehgtags.i (py37 !) | ||||
/sub/.hg/store/requires |
$ hg init empty | $ hg init empty | ||||
$ cd empty | $ cd empty | ||||
$ hg debugformat | $ hg debugformat | ||||
format-variant repo | format-variant repo | ||||
fncache: yes | fncache: yes | ||||
dirstate-v2: no | dirstate-v2: no | ||||
dotencode: yes | dotencode: yes | ||||
generaldelta: yes | generaldelta: yes | ||||
share-safe: no | share-safe: yes | ||||
sparserevlog: yes | sparserevlog: yes | ||||
persistent-nodemap: no (no-rust !) | persistent-nodemap: no (no-rust !) | ||||
persistent-nodemap: yes (rust !) | persistent-nodemap: yes (rust !) | ||||
copies-sdc: no | copies-sdc: no | ||||
revlog-v2: no | revlog-v2: no | ||||
changelog-v2: no | changelog-v2: no | ||||
plain-cl-delta: yes | plain-cl-delta: yes | ||||
compression: zlib | compression: zlib | ||||
compression-level: default | compression-level: default | ||||
$ hg debugformat --verbose | $ hg debugformat --verbose | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: yes yes yes | fncache: yes yes yes | ||||
dirstate-v2: no no no | dirstate-v2: no no no | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: yes yes yes | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no (no-rust !) | persistent-nodemap: no no no (no-rust !) | ||||
persistent-nodemap: yes yes no (rust !) | persistent-nodemap: yes yes no (rust !) | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
changelog-v2: no no no | changelog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib (no-zstd !) | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zlib zlib zstd (zstd !) | compression: zlib zlib zstd (zstd !) | ||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugformat --verbose --config format.usefncache=no | $ hg debugformat --verbose --config format.usefncache=no | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: yes no yes | fncache: yes no yes | ||||
dirstate-v2: no no no | dirstate-v2: no no no | ||||
dotencode: yes no yes | dotencode: yes no yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: yes yes yes | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no (no-rust !) | persistent-nodemap: no no no (no-rust !) | ||||
persistent-nodemap: yes yes no (rust !) | persistent-nodemap: yes yes no (rust !) | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
changelog-v2: no no no | changelog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib (no-zstd !) | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zlib zlib zstd (zstd !) | compression: zlib zlib zstd (zstd !) | ||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugformat --verbose --config format.usefncache=no --color=debug | $ hg debugformat --verbose --config format.usefncache=no --color=debug | ||||
format-variant repo config default | format-variant repo config default | ||||
[formatvariant.name.mismatchconfig|fncache: ][formatvariant.repo.mismatchconfig| yes][formatvariant.config.special| no][formatvariant.default| yes] | [formatvariant.name.mismatchconfig|fncache: ][formatvariant.repo.mismatchconfig| yes][formatvariant.config.special| no][formatvariant.default| yes] | ||||
[formatvariant.name.uptodate|dirstate-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | [formatvariant.name.uptodate|dirstate-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | ||||
[formatvariant.name.mismatchconfig|dotencode: ][formatvariant.repo.mismatchconfig| yes][formatvariant.config.special| no][formatvariant.default| yes] | [formatvariant.name.mismatchconfig|dotencode: ][formatvariant.repo.mismatchconfig| yes][formatvariant.config.special| no][formatvariant.default| yes] | ||||
[formatvariant.name.uptodate|generaldelta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes] | [formatvariant.name.uptodate|generaldelta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes] | ||||
[formatvariant.name.uptodate|share-safe: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | [formatvariant.name.uptodate|share-safe: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes] | ||||
[formatvariant.name.uptodate|sparserevlog: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes] | [formatvariant.name.uptodate|sparserevlog: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes] | ||||
[formatvariant.name.uptodate|persistent-nodemap:][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] (no-rust !) | [formatvariant.name.uptodate|persistent-nodemap:][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] (no-rust !) | ||||
[formatvariant.name.mismatchdefault|persistent-nodemap:][formatvariant.repo.mismatchdefault| yes][formatvariant.config.special| yes][formatvariant.default| no] (rust !) | [formatvariant.name.mismatchdefault|persistent-nodemap:][formatvariant.repo.mismatchdefault| yes][formatvariant.config.special| yes][formatvariant.default| no] (rust !) | ||||
[formatvariant.name.uptodate|copies-sdc: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | [formatvariant.name.uptodate|copies-sdc: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | ||||
[formatvariant.name.uptodate|revlog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | [formatvariant.name.uptodate|revlog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | ||||
[formatvariant.name.uptodate|changelog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | [formatvariant.name.uptodate|changelog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | ||||
[formatvariant.name.uptodate|plain-cl-delta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes] | [formatvariant.name.uptodate|plain-cl-delta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes] | ||||
[formatvariant.name.uptodate|compression: ][formatvariant.repo.uptodate| zlib][formatvariant.config.default| zlib][formatvariant.default| zlib] (no-zstd !) | [formatvariant.name.uptodate|compression: ][formatvariant.repo.uptodate| zlib][formatvariant.config.default| zlib][formatvariant.default| zlib] (no-zstd !) | ||||
}, | }, | ||||
{ | { | ||||
"config": true, | "config": true, | ||||
"default": true, | "default": true, | ||||
"name": "generaldelta", | "name": "generaldelta", | ||||
"repo": true | "repo": true | ||||
}, | }, | ||||
{ | { | ||||
"config": false, | "config": true, | ||||
"default": false, | "default": true, | ||||
"name": "share-safe", | "name": "share-safe", | ||||
"repo": false | "repo": true | ||||
}, | }, | ||||
{ | { | ||||
"config": true, | "config": true, | ||||
"default": true, | "default": true, | ||||
"name": "sparserevlog", | "name": "sparserevlog", | ||||
"repo": true | "repo": true | ||||
}, | }, | ||||
{ | { | ||||
"repo": "default" | "repo": "default" | ||||
} | } | ||||
] | ] | ||||
$ hg debugupgraderepo | $ hg debugupgraderepo | ||||
(no format upgrades found in existing repository) | (no format upgrades found in existing repository) | ||||
performing an upgrade with "--run" will make the following changes: | performing an upgrade with "--run" will make the following changes: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !) | ||||
no revlogs to process | no revlogs to process | ||||
additional optimizations are available by specifying "--optimize <name>": | additional optimizations are available by specifying "--optimize <name>": | ||||
re-delta-parent | re-delta-parent | ||||
deltas within internal storage will be recalculated to choose an optimal base revision where this was not already done; the size of the repository may shrink and various operations may become faster; the first time this optimization is performed could slow down upgrade execution considerably; subsequent invocations should not run noticeably slower | deltas within internal storage will be recalculated to choose an optimal base revision where this was not already done; the size of the repository may shrink and various operations may become faster; the first time this optimization is performed could slow down upgrade execution considerably; subsequent invocations should not run noticeably slower | ||||
re-delta-multibase | re-delta-multibase | ||||
deltas within internal storage will be recalculated against multiple base revision and the smallest difference will be used; the size of the repository may shrink significantly when there are many merges; this optimization will slow down execution in proportion to the number of merges in the repository and the amount of files in the repository; this slow down should not be significant unless there are tens of thousands of files and thousands of merges | deltas within internal storage will be recalculated against multiple base revision and the smallest difference will be used; the size of the repository may shrink significantly when there are many merges; this optimization will slow down execution in proportion to the number of merges in the repository and the amount of files in the repository; this slow down should not be significant unless there are tens of thousands of files and thousands of merges | ||||
re-delta-all | re-delta-all | ||||
deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed | deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed | ||||
re-delta-fulladd | re-delta-fulladd | ||||
every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved. | every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved. | ||||
$ hg debugupgraderepo --quiet | $ hg debugupgraderepo --quiet | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !) | ||||
no revlogs to process | no revlogs to process | ||||
--optimize can be used to add optimizations | --optimize can be used to add optimizations | ||||
$ hg debugupgrade --optimize 're-delta-parent' | $ hg debugupgrade --optimize 're-delta-parent' | ||||
(no format upgrades found in existing repository) | (no format upgrades found in existing repository) | ||||
performing an upgrade with "--run" will make the following changes: | performing an upgrade with "--run" will make the following changes: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !) | ||||
optimisations: re-delta-parent | optimisations: re-delta-parent | ||||
re-delta-parent | re-delta-parent | ||||
deltas within internal storage will choose a new base revision if needed | deltas within internal storage will choose a new base revision if needed | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
modern form of the option | modern form of the option | ||||
$ hg debugupgrade --optimize re-delta-parent | $ hg debugupgrade --optimize re-delta-parent | ||||
(no format upgrades found in existing repository) | (no format upgrades found in existing repository) | ||||
performing an upgrade with "--run" will make the following changes: | performing an upgrade with "--run" will make the following changes: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !) | ||||
optimisations: re-delta-parent | optimisations: re-delta-parent | ||||
re-delta-parent | re-delta-parent | ||||
deltas within internal storage will choose a new base revision if needed | deltas within internal storage will choose a new base revision if needed | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
additional optimizations are available by specifying "--optimize <name>": | additional optimizations are available by specifying "--optimize <name>": | ||||
re-delta-multibase | re-delta-multibase | ||||
deltas within internal storage will be recalculated against multiple base revision and the smallest difference will be used; the size of the repository may shrink significantly when there are many merges; this optimization will slow down execution in proportion to the number of merges in the repository and the amount of files in the repository; this slow down should not be significant unless there are tens of thousands of files and thousands of merges | deltas within internal storage will be recalculated against multiple base revision and the smallest difference will be used; the size of the repository may shrink significantly when there are many merges; this optimization will slow down execution in proportion to the number of merges in the repository and the amount of files in the repository; this slow down should not be significant unless there are tens of thousands of files and thousands of merges | ||||
re-delta-all | re-delta-all | ||||
deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed | deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed | ||||
re-delta-fulladd | re-delta-fulladd | ||||
every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved. | every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved. | ||||
$ hg debugupgrade --optimize re-delta-parent --quiet | $ hg debugupgrade --optimize re-delta-parent --quiet | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !) | ||||
optimisations: re-delta-parent | optimisations: re-delta-parent | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
compression: zlib | compression: zlib | ||||
compression-level: default | compression-level: default | ||||
$ hg debugformat --verbose | $ hg debugformat --verbose | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: no yes yes | fncache: no yes yes | ||||
dirstate-v2: no no no | dirstate-v2: no no no | ||||
dotencode: no yes yes | dotencode: no yes yes | ||||
generaldelta: no yes yes | generaldelta: no yes yes | ||||
share-safe: no no no | share-safe: no yes yes | ||||
sparserevlog: no yes yes | sparserevlog: no yes yes | ||||
persistent-nodemap: no no no (no-rust !) | persistent-nodemap: no no no (no-rust !) | ||||
persistent-nodemap: no yes no (rust !) | persistent-nodemap: no yes no (rust !) | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
changelog-v2: no no no | changelog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib (no-zstd !) | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zlib zlib zstd (zstd !) | compression: zlib zlib zstd (zstd !) | ||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugformat --verbose --config format.usegeneraldelta=no | $ hg debugformat --verbose --config format.usegeneraldelta=no | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: no yes yes | fncache: no yes yes | ||||
dirstate-v2: no no no | dirstate-v2: no no no | ||||
dotencode: no yes yes | dotencode: no yes yes | ||||
generaldelta: no no yes | generaldelta: no no yes | ||||
share-safe: no no no | share-safe: no yes yes | ||||
sparserevlog: no no yes | sparserevlog: no no yes | ||||
persistent-nodemap: no no no (no-rust !) | persistent-nodemap: no no no (no-rust !) | ||||
persistent-nodemap: no yes no (rust !) | persistent-nodemap: no yes no (rust !) | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
changelog-v2: no no no | changelog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib (no-zstd !) | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zlib zlib zstd (zstd !) | compression: zlib zlib zstd (zstd !) | ||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugformat --verbose --config format.usegeneraldelta=no --color=debug | $ hg debugformat --verbose --config format.usegeneraldelta=no --color=debug | ||||
format-variant repo config default | format-variant repo config default | ||||
[formatvariant.name.mismatchconfig|fncache: ][formatvariant.repo.mismatchconfig| no][formatvariant.config.default| yes][formatvariant.default| yes] | [formatvariant.name.mismatchconfig|fncache: ][formatvariant.repo.mismatchconfig| no][formatvariant.config.default| yes][formatvariant.default| yes] | ||||
[formatvariant.name.uptodate|dirstate-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | [formatvariant.name.uptodate|dirstate-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | ||||
[formatvariant.name.mismatchconfig|dotencode: ][formatvariant.repo.mismatchconfig| no][formatvariant.config.default| yes][formatvariant.default| yes] | [formatvariant.name.mismatchconfig|dotencode: ][formatvariant.repo.mismatchconfig| no][formatvariant.config.default| yes][formatvariant.default| yes] | ||||
[formatvariant.name.mismatchdefault|generaldelta: ][formatvariant.repo.mismatchdefault| no][formatvariant.config.special| no][formatvariant.default| yes] | [formatvariant.name.mismatchdefault|generaldelta: ][formatvariant.repo.mismatchdefault| no][formatvariant.config.special| no][formatvariant.default| yes] | ||||
[formatvariant.name.uptodate|share-safe: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | [formatvariant.name.mismatchconfig|share-safe: ][formatvariant.repo.mismatchconfig| no][formatvariant.config.default| yes][formatvariant.default| yes] | ||||
[formatvariant.name.mismatchdefault|sparserevlog: ][formatvariant.repo.mismatchdefault| no][formatvariant.config.special| no][formatvariant.default| yes] | [formatvariant.name.mismatchdefault|sparserevlog: ][formatvariant.repo.mismatchdefault| no][formatvariant.config.special| no][formatvariant.default| yes] | ||||
[formatvariant.name.uptodate|persistent-nodemap:][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] (no-rust !) | [formatvariant.name.uptodate|persistent-nodemap:][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] (no-rust !) | ||||
[formatvariant.name.mismatchconfig|persistent-nodemap:][formatvariant.repo.mismatchconfig| no][formatvariant.config.special| yes][formatvariant.default| no] (rust !) | [formatvariant.name.mismatchconfig|persistent-nodemap:][formatvariant.repo.mismatchconfig| no][formatvariant.config.special| yes][formatvariant.default| no] (rust !) | ||||
[formatvariant.name.uptodate|copies-sdc: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | [formatvariant.name.uptodate|copies-sdc: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | ||||
[formatvariant.name.uptodate|revlog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | [formatvariant.name.uptodate|revlog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | ||||
[formatvariant.name.uptodate|changelog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | [formatvariant.name.uptodate|changelog-v2: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | ||||
[formatvariant.name.uptodate|plain-cl-delta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes] | [formatvariant.name.uptodate|plain-cl-delta: ][formatvariant.repo.uptodate| yes][formatvariant.config.default| yes][formatvariant.default| yes] | ||||
[formatvariant.name.uptodate|compression: ][formatvariant.repo.uptodate| zlib][formatvariant.config.default| zlib][formatvariant.default| zlib] (no-zstd !) | [formatvariant.name.uptodate|compression: ][formatvariant.repo.uptodate| zlib][formatvariant.config.default| zlib][formatvariant.default| zlib] (no-zstd !) | ||||
long and reserved filenames may not work correctly; repository performance is sub-optimal | long and reserved filenames may not work correctly; repository performance is sub-optimal | ||||
dotencode | dotencode | ||||
storage of filenames beginning with a period or space may not work correctly | storage of filenames beginning with a period or space may not work correctly | ||||
generaldelta | generaldelta | ||||
deltas within internal storage are unable to choose optimal revisions; repository is larger and slower than it could be; interaction with other repositories may require extra network and CPU resources, making "hg push" and "hg pull" slower | deltas within internal storage are unable to choose optimal revisions; repository is larger and slower than it could be; interaction with other repositories may require extra network and CPU resources, making "hg push" and "hg pull" slower | ||||
share-safe | |||||
old shared repositories do not share source repository requirements and config. This leads to various problems when the source repository format is upgraded or some new extensions are enabled. | |||||
sparserevlog | sparserevlog | ||||
in order to limit disk reading and memory usage on older version, the span of a delta chain from its root to its end is limited, whatever the relevant data in this span. This can severly limit Mercurial ability to build good chain of delta resulting is much more storage space being taken and limit reusability of on disk delta during exchange. | in order to limit disk reading and memory usage on older version, the span of a delta chain from its root to its end is limited, whatever the relevant data in this span. This can severly limit Mercurial ability to build good chain of delta resulting is much more storage space being taken and limit reusability of on disk delta during exchange. | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
persist the node -> rev mapping on disk to speedup lookup (rust !) | persist the node -> rev mapping on disk to speedup lookup (rust !) | ||||
(rust !) | (rust !) | ||||
performing an upgrade with "--run" will make the following changes: | performing an upgrade with "--run" will make the following changes: | ||||
requirements | requirements | ||||
preserved: revlogv1, store | preserved: revlogv1, store | ||||
added: dotencode, fncache, generaldelta, sparserevlog (no-rust !) | added: dotencode, fncache, generaldelta, share-safe, sparserevlog (no-rust !) | ||||
added: dotencode, fncache, generaldelta, persistent-nodemap, sparserevlog (rust !) | added: dotencode, fncache, generaldelta, persistent-nodemap, share-safe, sparserevlog (rust !) | ||||
fncache | fncache | ||||
repository will be more resilient to storing certain paths and performance of certain operations should be improved | repository will be more resilient to storing certain paths and performance of certain operations should be improved | ||||
dotencode | dotencode | ||||
repository will be better able to store files beginning with a space or period | repository will be better able to store files beginning with a space or period | ||||
generaldelta | generaldelta | ||||
repository storage will be able to create optimal deltas; new repository data will be smaller and read times should decrease; interacting with other repositories using this storage model should require less network and CPU resources, making "hg push" and "hg pull" faster | repository storage will be able to create optimal deltas; new repository data will be smaller and read times should decrease; interacting with other repositories using this storage model should require less network and CPU resources, making "hg push" and "hg pull" faster | ||||
share-safe | |||||
Upgrades a repository to share-safe format so that future shares of this repository share its requirements and configs. | |||||
sparserevlog | sparserevlog | ||||
Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server. | Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server. | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
Speedup revision lookup by node id. (rust !) | Speedup revision lookup by node id. (rust !) | ||||
(rust !) | (rust !) | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed | deltas within internal storage will always be recalculated without reusing prior deltas; this will likely make execution run several times slower; this optimization is typically not needed | ||||
re-delta-fulladd | re-delta-fulladd | ||||
every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved. | every revision will be re-added as if it was new content. It will go through the full storage mechanism giving extensions a chance to process it (eg. lfs). This is similar to "re-delta-all" but even slower since more logic is involved. | ||||
$ hg debugupgraderepo --quiet | $ hg debugupgraderepo --quiet | ||||
requirements | requirements | ||||
preserved: revlogv1, store | preserved: revlogv1, store | ||||
added: dotencode, fncache, generaldelta, sparserevlog (no-rust !) | added: dotencode, fncache, generaldelta, share-safe, sparserevlog (no-rust !) | ||||
added: dotencode, fncache, generaldelta, persistent-nodemap, sparserevlog (rust !) | added: dotencode, fncache, generaldelta, persistent-nodemap, share-safe, sparserevlog (rust !) | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
$ hg --config format.dotencode=false debugupgraderepo | $ hg --config format.dotencode=false debugupgraderepo | ||||
note: selecting all-filelogs for processing to change: fncache | note: selecting all-filelogs for processing to change: fncache | ||||
note: selecting all-manifestlogs for processing to change: fncache | note: selecting all-manifestlogs for processing to change: fncache | ||||
note: selecting changelog for processing to change: fncache | note: selecting changelog for processing to change: fncache | ||||
repository lacks features recommended by current config options: | repository lacks features recommended by current config options: | ||||
fncache | fncache | ||||
long and reserved filenames may not work correctly; repository performance is sub-optimal | long and reserved filenames may not work correctly; repository performance is sub-optimal | ||||
generaldelta | generaldelta | ||||
deltas within internal storage are unable to choose optimal revisions; repository is larger and slower than it could be; interaction with other repositories may require extra network and CPU resources, making "hg push" and "hg pull" slower | deltas within internal storage are unable to choose optimal revisions; repository is larger and slower than it could be; interaction with other repositories may require extra network and CPU resources, making "hg push" and "hg pull" slower | ||||
share-safe | |||||
old shared repositories do not share source repository requirements and config. This leads to various problems when the source repository format is upgraded or some new extensions are enabled. | |||||
sparserevlog | sparserevlog | ||||
in order to limit disk reading and memory usage on older version, the span of a delta chain from its root to its end is limited, whatever the relevant data in this span. This can severly limit Mercurial ability to build good chain of delta resulting is much more storage space being taken and limit reusability of on disk delta during exchange. | in order to limit disk reading and memory usage on older version, the span of a delta chain from its root to its end is limited, whatever the relevant data in this span. This can severly limit Mercurial ability to build good chain of delta resulting is much more storage space being taken and limit reusability of on disk delta during exchange. | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
persist the node -> rev mapping on disk to speedup lookup (rust !) | persist the node -> rev mapping on disk to speedup lookup (rust !) | ||||
(rust !) | (rust !) | ||||
repository lacks features used by the default config options: | repository lacks features used by the default config options: | ||||
dotencode | dotencode | ||||
storage of filenames beginning with a period or space may not work correctly | storage of filenames beginning with a period or space may not work correctly | ||||
performing an upgrade with "--run" will make the following changes: | performing an upgrade with "--run" will make the following changes: | ||||
requirements | requirements | ||||
preserved: revlogv1, store | preserved: revlogv1, store | ||||
added: fncache, generaldelta, sparserevlog (no-rust !) | added: fncache, generaldelta, share-safe, sparserevlog (no-rust !) | ||||
added: fncache, generaldelta, persistent-nodemap, sparserevlog (rust !) | added: fncache, generaldelta, persistent-nodemap, share-safe, sparserevlog (rust !) | ||||
fncache | fncache | ||||
repository will be more resilient to storing certain paths and performance of certain operations should be improved | repository will be more resilient to storing certain paths and performance of certain operations should be improved | ||||
generaldelta | generaldelta | ||||
repository storage will be able to create optimal deltas; new repository data will be smaller and read times should decrease; interacting with other repositories using this storage model should require less network and CPU resources, making "hg push" and "hg pull" faster | repository storage will be able to create optimal deltas; new repository data will be smaller and read times should decrease; interacting with other repositories using this storage model should require less network and CPU resources, making "hg push" and "hg pull" faster | ||||
share-safe | |||||
Upgrades a repository to share-safe format so that future shares of this repository share its requirements and configs. | |||||
sparserevlog | sparserevlog | ||||
Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server. | Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server. | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
Speedup revision lookup by node id. (rust !) | Speedup revision lookup by node id. (rust !) | ||||
(rust !) | (rust !) | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
$ hg debugupgraderepo --run --config format.sparse-revlog=false | $ hg debugupgraderepo --run --config format.sparse-revlog=false | ||||
note: selecting all-filelogs for processing to change: generaldelta | note: selecting all-filelogs for processing to change: generaldelta | ||||
note: selecting all-manifestlogs for processing to change: generaldelta | note: selecting all-manifestlogs for processing to change: generaldelta | ||||
note: selecting changelog for processing to change: generaldelta | note: selecting changelog for processing to change: generaldelta | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, revlogv1, store (no-rust !) | preserved: dotencode, fncache, revlogv1, share-safe, store (no-rust !) | ||||
preserved: dotencode, fncache, persistent-nodemap, revlogv1, store (rust !) | preserved: dotencode, fncache, persistent-nodemap, revlogv1, share-safe, store (rust !) | ||||
added: generaldelta | added: generaldelta | ||||
generaldelta | generaldelta | ||||
repository storage will be able to create optimal deltas; new repository data will be smaller and read times should decrease; interacting with other repositories using this storage model should require less network and CPU resources, making "hg push" and "hg pull" faster | repository storage will be able to create optimal deltas; new repository data will be smaller and read times should decrease; interacting with other repositories using this storage model should require less network and CPU resources, making "hg push" and "hg pull" faster | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
beginning upgrade... | beginning upgrade... | ||||
repository locked and read-only | repository locked and read-only | ||||
creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob) | creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob) | ||||
(it is safe to interrupt this process any time before data migration completes) | (it is safe to interrupt this process any time before data migration completes) | ||||
migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog) | migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog) | ||||
migrating 519 KB in store; 1.05 MB tracked data | migrating 519 KB in store; 1.05 MB tracked data | ||||
migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data) | migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data) | ||||
finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes | finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes | ||||
migrating 1 manifests containing 3 revisions (384 bytes in store; 238 bytes tracked data) | migrating 1 manifests containing 3 revisions (384 bytes in store; 238 bytes tracked data) | ||||
finished migrating 3 manifest revisions across 1 manifests; change in size: -17 bytes | finished migrating 3 manifest revisions across 1 manifests; change in size: -17 bytes | ||||
migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | ||||
finished migrating 3 changelog revisions; change in size: 0 bytes | finished migrating 3 changelog revisions; change in size: 0 bytes | ||||
finished migrating 9 total revisions; total change in store size: -17 bytes | finished migrating 9 total revisions; total change in store size: -17 bytes | ||||
copying phaseroots | copying phaseroots | ||||
copying requires | |||||
data fully upgraded in a temporary repository | data fully upgraded in a temporary repository | ||||
marking source repository as being upgraded; clients will be unable to read from repository | marking source repository as being upgraded; clients will be unable to read from repository | ||||
starting in-place swap of repository data | starting in-place swap of repository data | ||||
replaced files will be backed up at $TESTTMP/upgradegd/.hg/upgradebackup.* (glob) | replaced files will be backed up at $TESTTMP/upgradegd/.hg/upgradebackup.* (glob) | ||||
replacing store... | replacing store... | ||||
store replacement complete; repository was inconsistent for *s (glob) | store replacement complete; repository was inconsistent for *s (glob) | ||||
finalizing requirements file and making repository readable again | finalizing requirements file and making repository readable again | ||||
removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | ||||
copy of old repository backed up at $TESTTMP/upgradegd/.hg/upgradebackup.* (glob) | copy of old repository backed up at $TESTTMP/upgradegd/.hg/upgradebackup.* (glob) | ||||
the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified | the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified | ||||
Original requirements backed up | Original requirements backed up | ||||
$ cat .hg/upgradebackup.*/requires | $ cat .hg/upgradebackup.*/requires | ||||
share-safe | |||||
$ cat .hg/upgradebackup.*/store/requires | |||||
dotencode | dotencode | ||||
fncache | fncache | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlogv1 | revlogv1 | ||||
store | store | ||||
upgradeinprogress | |||||
generaldelta added to original requirements files | generaldelta added to original requirements files | ||||
$ hg debugrequires | $ hg debugrequires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
store | store | ||||
store directory has files we expect | store directory has files we expect | ||||
$ ls .hg/store | $ ls .hg/store | ||||
00changelog.i | 00changelog.i | ||||
00manifest.i | 00manifest.i | ||||
data | data | ||||
fncache | fncache | ||||
phaseroots | phaseroots | ||||
requires | |||||
undo | undo | ||||
undo.backupfiles | undo.backupfiles | ||||
undo.phaseroots | undo.phaseroots | ||||
manifest should be generaldelta | manifest should be generaldelta | ||||
$ hg debugrevlog -m | grep flags | $ hg debugrevlog -m | grep flags | ||||
flags : inline, generaldelta | flags : inline, generaldelta | ||||
$ ls -d .hg/upgradebackup.*/ | $ ls -d .hg/upgradebackup.*/ | ||||
.hg/upgradebackup.*/ (glob) | .hg/upgradebackup.*/ (glob) | ||||
$ ls .hg/upgradebackup.*/store | $ ls .hg/upgradebackup.*/store | ||||
00changelog.i | 00changelog.i | ||||
00manifest.i | 00manifest.i | ||||
data | data | ||||
fncache | fncache | ||||
phaseroots | phaseroots | ||||
requires | |||||
undo | undo | ||||
undo.backup.fncache | undo.backup.fncache | ||||
undo.backupfiles | undo.backupfiles | ||||
undo.phaseroots | undo.phaseroots | ||||
unless --no-backup is passed | unless --no-backup is passed | ||||
$ rm -rf .hg/upgradebackup.*/ | $ rm -rf .hg/upgradebackup.*/ | ||||
$ hg debugupgraderepo --run --no-backup | $ hg debugupgraderepo --run --no-backup | ||||
note: selecting all-filelogs for processing to change: sparserevlog | note: selecting all-filelogs for processing to change: sparserevlog | ||||
note: selecting all-manifestlogs for processing to change: sparserevlog | note: selecting all-manifestlogs for processing to change: sparserevlog | ||||
note: selecting changelog for processing to change: sparserevlog | note: selecting changelog for processing to change: sparserevlog | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !) | ||||
added: sparserevlog | added: sparserevlog | ||||
sparserevlog | sparserevlog | ||||
Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server. | Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server. | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
beginning upgrade... | beginning upgrade... | ||||
repository locked and read-only | repository locked and read-only | ||||
creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob) | creating temporary repository to stage upgraded data: $TESTTMP/upgradegd/.hg/upgrade.* (glob) | ||||
(it is safe to interrupt this process any time before data migration completes) | (it is safe to interrupt this process any time before data migration completes) | ||||
migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog) | migrating 9 total revisions (3 in filelogs, 3 in manifests, 3 in changelog) | ||||
migrating 519 KB in store; 1.05 MB tracked data | migrating 519 KB in store; 1.05 MB tracked data | ||||
migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data) | migrating 3 filelogs containing 3 revisions (518 KB in store; 1.05 MB tracked data) | ||||
finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes | finished migrating 3 filelog revisions across 3 filelogs; change in size: 0 bytes | ||||
migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data) | migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data) | ||||
finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | ||||
migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | ||||
finished migrating 3 changelog revisions; change in size: 0 bytes | finished migrating 3 changelog revisions; change in size: 0 bytes | ||||
finished migrating 9 total revisions; total change in store size: 0 bytes | finished migrating 9 total revisions; total change in store size: 0 bytes | ||||
copying phaseroots | copying phaseroots | ||||
copying requires | |||||
data fully upgraded in a temporary repository | data fully upgraded in a temporary repository | ||||
marking source repository as being upgraded; clients will be unable to read from repository | marking source repository as being upgraded; clients will be unable to read from repository | ||||
starting in-place swap of repository data | starting in-place swap of repository data | ||||
replacing store... | replacing store... | ||||
store replacement complete; repository was inconsistent for * (glob) | store replacement complete; repository was inconsistent for * (glob) | ||||
finalizing requirements file and making repository readable again | finalizing requirements file and making repository readable again | ||||
removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | ||||
$ ls -1 .hg/ | grep upgradebackup | $ ls -1 .hg/ | grep upgradebackup | ||||
[1] | [1] | ||||
We can restrict optimization to some revlog: | We can restrict optimization to some revlog: | ||||
$ hg debugupgrade --optimize re-delta-parent --run --manifest --no-backup --debug --traceback | $ hg debugupgrade --optimize re-delta-parent --run --manifest --no-backup --debug --traceback | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !) | ||||
optimisations: re-delta-parent | optimisations: re-delta-parent | ||||
re-delta-parent | re-delta-parent | ||||
deltas within internal storage will choose a new base revision if needed | deltas within internal storage will choose a new base revision if needed | ||||
processed revlogs: | processed revlogs: | ||||
- manifest | - manifest | ||||
migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data) | migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data) | ||||
cloning 3 revisions from 00manifest.i | cloning 3 revisions from 00manifest.i | ||||
finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | ||||
migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | ||||
blindly copying 00changelog.i containing 3 revisions | blindly copying 00changelog.i containing 3 revisions | ||||
finished migrating 3 changelog revisions; change in size: 0 bytes | finished migrating 3 changelog revisions; change in size: 0 bytes | ||||
finished migrating 9 total revisions; total change in store size: 0 bytes | finished migrating 9 total revisions; total change in store size: 0 bytes | ||||
copying phaseroots | copying phaseroots | ||||
copying requires | |||||
data fully upgraded in a temporary repository | data fully upgraded in a temporary repository | ||||
marking source repository as being upgraded; clients will be unable to read from repository | marking source repository as being upgraded; clients will be unable to read from repository | ||||
starting in-place swap of repository data | starting in-place swap of repository data | ||||
replacing store... | replacing store... | ||||
store replacement complete; repository was inconsistent for *s (glob) | store replacement complete; repository was inconsistent for *s (glob) | ||||
finalizing requirements file and making repository readable again | finalizing requirements file and making repository readable again | ||||
removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | ||||
checked 3 changesets with 3 changes to 3 files | checked 3 changesets with 3 changes to 3 files | ||||
Check we can select negatively | Check we can select negatively | ||||
$ hg debugupgrade --optimize re-delta-parent --run --no-manifest --no-backup --debug --traceback | $ hg debugupgrade --optimize re-delta-parent --run --no-manifest --no-backup --debug --traceback | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !) | ||||
optimisations: re-delta-parent | optimisations: re-delta-parent | ||||
re-delta-parent | re-delta-parent | ||||
deltas within internal storage will choose a new base revision if needed | deltas within internal storage will choose a new base revision if needed | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data) | migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data) | ||||
blindly copying 00manifest.i containing 3 revisions | blindly copying 00manifest.i containing 3 revisions | ||||
finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | ||||
migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | ||||
cloning 3 revisions from 00changelog.i | cloning 3 revisions from 00changelog.i | ||||
finished migrating 3 changelog revisions; change in size: 0 bytes | finished migrating 3 changelog revisions; change in size: 0 bytes | ||||
finished migrating 9 total revisions; total change in store size: 0 bytes | finished migrating 9 total revisions; total change in store size: 0 bytes | ||||
copying phaseroots | copying phaseroots | ||||
copying requires | |||||
data fully upgraded in a temporary repository | data fully upgraded in a temporary repository | ||||
marking source repository as being upgraded; clients will be unable to read from repository | marking source repository as being upgraded; clients will be unable to read from repository | ||||
starting in-place swap of repository data | starting in-place swap of repository data | ||||
replacing store... | replacing store... | ||||
store replacement complete; repository was inconsistent for *s (glob) | store replacement complete; repository was inconsistent for *s (glob) | ||||
finalizing requirements file and making repository readable again | finalizing requirements file and making repository readable again | ||||
removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
checked 3 changesets with 3 changes to 3 files | checked 3 changesets with 3 changes to 3 files | ||||
Check that we can select changelog only | Check that we can select changelog only | ||||
$ hg debugupgrade --optimize re-delta-parent --run --changelog --no-backup --debug --traceback | $ hg debugupgrade --optimize re-delta-parent --run --changelog --no-backup --debug --traceback | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !) | ||||
optimisations: re-delta-parent | optimisations: re-delta-parent | ||||
re-delta-parent | re-delta-parent | ||||
deltas within internal storage will choose a new base revision if needed | deltas within internal storage will choose a new base revision if needed | ||||
processed revlogs: | processed revlogs: | ||||
- changelog | - changelog | ||||
migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data) | migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data) | ||||
blindly copying 00manifest.i containing 3 revisions | blindly copying 00manifest.i containing 3 revisions | ||||
finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | ||||
migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | ||||
cloning 3 revisions from 00changelog.i | cloning 3 revisions from 00changelog.i | ||||
finished migrating 3 changelog revisions; change in size: 0 bytes | finished migrating 3 changelog revisions; change in size: 0 bytes | ||||
finished migrating 9 total revisions; total change in store size: 0 bytes | finished migrating 9 total revisions; total change in store size: 0 bytes | ||||
copying phaseroots | copying phaseroots | ||||
copying requires | |||||
data fully upgraded in a temporary repository | data fully upgraded in a temporary repository | ||||
marking source repository as being upgraded; clients will be unable to read from repository | marking source repository as being upgraded; clients will be unable to read from repository | ||||
starting in-place swap of repository data | starting in-place swap of repository data | ||||
replacing store... | replacing store... | ||||
store replacement complete; repository was inconsistent for *s (glob) | store replacement complete; repository was inconsistent for *s (glob) | ||||
finalizing requirements file and making repository readable again | finalizing requirements file and making repository readable again | ||||
removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
checked 3 changesets with 3 changes to 3 files | checked 3 changesets with 3 changes to 3 files | ||||
Check that we can select filelog only | Check that we can select filelog only | ||||
$ hg debugupgrade --optimize re-delta-parent --run --no-changelog --no-manifest --no-backup --debug --traceback | $ hg debugupgrade --optimize re-delta-parent --run --no-changelog --no-manifest --no-backup --debug --traceback | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !) | ||||
optimisations: re-delta-parent | optimisations: re-delta-parent | ||||
re-delta-parent | re-delta-parent | ||||
deltas within internal storage will choose a new base revision if needed | deltas within internal storage will choose a new base revision if needed | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data) | migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data) | ||||
blindly copying 00manifest.i containing 3 revisions | blindly copying 00manifest.i containing 3 revisions | ||||
finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | ||||
migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | ||||
blindly copying 00changelog.i containing 3 revisions | blindly copying 00changelog.i containing 3 revisions | ||||
finished migrating 3 changelog revisions; change in size: 0 bytes | finished migrating 3 changelog revisions; change in size: 0 bytes | ||||
finished migrating 9 total revisions; total change in store size: 0 bytes | finished migrating 9 total revisions; total change in store size: 0 bytes | ||||
copying phaseroots | copying phaseroots | ||||
copying requires | |||||
data fully upgraded in a temporary repository | data fully upgraded in a temporary repository | ||||
marking source repository as being upgraded; clients will be unable to read from repository | marking source repository as being upgraded; clients will be unable to read from repository | ||||
starting in-place swap of repository data | starting in-place swap of repository data | ||||
replacing store... | replacing store... | ||||
store replacement complete; repository was inconsistent for *s (glob) | store replacement complete; repository was inconsistent for *s (glob) | ||||
finalizing requirements file and making repository readable again | finalizing requirements file and making repository readable again | ||||
removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
checked 3 changesets with 3 changes to 3 files | checked 3 changesets with 3 changes to 3 files | ||||
Check you can't skip revlog clone during important format downgrade | Check you can't skip revlog clone during important format downgrade | ||||
$ echo "[format]" > .hg/hgrc | $ echo "[format]" > .hg/hgrc | ||||
$ echo "sparse-revlog=no" >> .hg/hgrc | $ echo "sparse-revlog=no" >> .hg/hgrc | ||||
$ hg debugupgrade --optimize re-delta-parent --no-manifest --no-backup --quiet | $ hg debugupgrade --optimize re-delta-parent --no-manifest --no-backup --quiet | ||||
warning: ignoring --no-manifest, as upgrade is changing: sparserevlog | warning: ignoring --no-manifest, as upgrade is changing: sparserevlog | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !) | ||||
removed: sparserevlog | removed: sparserevlog | ||||
optimisations: re-delta-parent | optimisations: re-delta-parent | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
$ hg debugupgrade --optimize re-delta-parent --run --manifest --no-backup --debug --traceback | $ hg debugupgrade --optimize re-delta-parent --run --manifest --no-backup --debug --traceback | ||||
note: selecting all-filelogs for processing to change: sparserevlog | note: selecting all-filelogs for processing to change: sparserevlog | ||||
note: selecting changelog for processing to change: sparserevlog | note: selecting changelog for processing to change: sparserevlog | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !) | ||||
removed: sparserevlog | removed: sparserevlog | ||||
optimisations: re-delta-parent | optimisations: re-delta-parent | ||||
re-delta-parent | re-delta-parent | ||||
deltas within internal storage will choose a new base revision if needed | deltas within internal storage will choose a new base revision if needed | ||||
processed revlogs: | processed revlogs: | ||||
migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data) | migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data) | ||||
cloning 3 revisions from 00manifest.i | cloning 3 revisions from 00manifest.i | ||||
finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | ||||
migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | ||||
cloning 3 revisions from 00changelog.i | cloning 3 revisions from 00changelog.i | ||||
finished migrating 3 changelog revisions; change in size: 0 bytes | finished migrating 3 changelog revisions; change in size: 0 bytes | ||||
finished migrating 9 total revisions; total change in store size: 0 bytes | finished migrating 9 total revisions; total change in store size: 0 bytes | ||||
copying phaseroots | copying phaseroots | ||||
copying requires | |||||
data fully upgraded in a temporary repository | data fully upgraded in a temporary repository | ||||
marking source repository as being upgraded; clients will be unable to read from repository | marking source repository as being upgraded; clients will be unable to read from repository | ||||
starting in-place swap of repository data | starting in-place swap of repository data | ||||
replacing store... | replacing store... | ||||
store replacement complete; repository was inconsistent for *s (glob) | store replacement complete; repository was inconsistent for *s (glob) | ||||
finalizing requirements file and making repository readable again | finalizing requirements file and making repository readable again | ||||
removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
checked 3 changesets with 3 changes to 3 files | checked 3 changesets with 3 changes to 3 files | ||||
Check you can't skip revlog clone during important format upgrade | Check you can't skip revlog clone during important format upgrade | ||||
$ echo "sparse-revlog=yes" >> .hg/hgrc | $ echo "sparse-revlog=yes" >> .hg/hgrc | ||||
$ hg debugupgrade --optimize re-delta-parent --run --manifest --no-backup --debug --traceback | $ hg debugupgrade --optimize re-delta-parent --run --manifest --no-backup --debug --traceback | ||||
note: selecting all-filelogs for processing to change: sparserevlog | note: selecting all-filelogs for processing to change: sparserevlog | ||||
note: selecting changelog for processing to change: sparserevlog | note: selecting changelog for processing to change: sparserevlog | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !) | ||||
added: sparserevlog | added: sparserevlog | ||||
optimisations: re-delta-parent | optimisations: re-delta-parent | ||||
sparserevlog | sparserevlog | ||||
Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server. | Revlog supports delta chain with more unused data between payload. These gaps will be skipped at read time. This allows for better delta chains, making a better compression and faster exchange with server. | ||||
re-delta-parent | re-delta-parent | ||||
migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data) | migrating 1 manifests containing 3 revisions (367 bytes in store; 238 bytes tracked data) | ||||
cloning 3 revisions from 00manifest.i | cloning 3 revisions from 00manifest.i | ||||
finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | ||||
migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | migrating changelog containing 3 revisions (394 bytes in store; 199 bytes tracked data) | ||||
cloning 3 revisions from 00changelog.i | cloning 3 revisions from 00changelog.i | ||||
finished migrating 3 changelog revisions; change in size: 0 bytes | finished migrating 3 changelog revisions; change in size: 0 bytes | ||||
finished migrating 9 total revisions; total change in store size: 0 bytes | finished migrating 9 total revisions; total change in store size: 0 bytes | ||||
copying phaseroots | copying phaseroots | ||||
copying requires | |||||
data fully upgraded in a temporary repository | data fully upgraded in a temporary repository | ||||
marking source repository as being upgraded; clients will be unable to read from repository | marking source repository as being upgraded; clients will be unable to read from repository | ||||
starting in-place swap of repository data | starting in-place swap of repository data | ||||
replacing store... | replacing store... | ||||
store replacement complete; repository was inconsistent for *s (glob) | store replacement complete; repository was inconsistent for *s (glob) | ||||
finalizing requirements file and making repository readable again | finalizing requirements file and making repository readable again | ||||
removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | removing temporary repository $TESTTMP/upgradegd/.hg/upgrade.* (glob) | ||||
$ hg verify | $ hg verify | ||||
$ touch .hg/store/.XX_special_filename | $ touch .hg/store/.XX_special_filename | ||||
$ hg debugupgraderepo --run | $ hg debugupgraderepo --run | ||||
nothing to do | nothing to do | ||||
$ hg debugupgraderepo --run --optimize 're-delta-fulladd' | $ hg debugupgraderepo --run --optimize 're-delta-fulladd' | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !) | ||||
optimisations: re-delta-fulladd | optimisations: re-delta-fulladd | ||||
re-delta-fulladd | re-delta-fulladd | ||||
each revision will be added as new content to the internal storage; this will likely drastically slow down execution time, but some extensions might need it | each revision will be added as new content to the internal storage; this will likely drastically slow down execution time, but some extensions might need it | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
finished migrating 1 filelog revisions across 1 filelogs; change in size: 0 bytes | finished migrating 1 filelog revisions across 1 filelogs; change in size: 0 bytes | ||||
migrating 1 manifests containing 1 revisions (110 bytes in store; 45 bytes tracked data) | migrating 1 manifests containing 1 revisions (110 bytes in store; 45 bytes tracked data) | ||||
finished migrating 1 manifest revisions across 1 manifests; change in size: 0 bytes | finished migrating 1 manifest revisions across 1 manifests; change in size: 0 bytes | ||||
migrating changelog containing 1 revisions (127 bytes in store; 62 bytes tracked data) | migrating changelog containing 1 revisions (127 bytes in store; 62 bytes tracked data) | ||||
finished migrating 1 changelog revisions; change in size: 0 bytes | finished migrating 1 changelog revisions; change in size: 0 bytes | ||||
finished migrating 3 total revisions; total change in store size: 0 bytes | finished migrating 3 total revisions; total change in store size: 0 bytes | ||||
copying .XX_special_filename | copying .XX_special_filename | ||||
copying phaseroots | copying phaseroots | ||||
copying requires | |||||
data fully upgraded in a temporary repository | data fully upgraded in a temporary repository | ||||
marking source repository as being upgraded; clients will be unable to read from repository | marking source repository as being upgraded; clients will be unable to read from repository | ||||
starting in-place swap of repository data | starting in-place swap of repository data | ||||
replaced files will be backed up at $TESTTMP/store-filenames/.hg/upgradebackup.* (glob) | replaced files will be backed up at $TESTTMP/store-filenames/.hg/upgradebackup.* (glob) | ||||
replacing store... | replacing store... | ||||
store replacement complete; repository was inconsistent for *s (glob) | store replacement complete; repository was inconsistent for *s (glob) | ||||
finalizing requirements file and making repository readable again | finalizing requirements file and making repository readable again | ||||
removing temporary repository $TESTTMP/store-filenames/.hg/upgrade.* (glob) | removing temporary repository $TESTTMP/store-filenames/.hg/upgrade.* (glob) | ||||
$ hg -q commit -m initial | $ hg -q commit -m initial | ||||
$ hg debugrequires | $ hg debugrequires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
largefiles | largefiles | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ hg debugupgraderepo --run | $ hg debugupgraderepo --run | ||||
nothing to do | nothing to do | ||||
$ hg debugrequires | $ hg debugrequires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
largefiles | largefiles | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ cat << EOF >> .hg/hgrc | $ cat << EOF >> .hg/hgrc | ||||
> [extensions] | > [extensions] | ||||
> lfs = | > lfs = | ||||
> [lfs] | > [lfs] | ||||
> threshold = 10 | > threshold = 10 | ||||
0 1 1 -1 base 77 182 77 0.42308 77 0 0.00000 77 77 1.00000 1 | 0 1 1 -1 base 77 182 77 0.42308 77 0 0.00000 77 77 1.00000 1 | ||||
1 1 2 0 p1 21 191 98 0.51309 98 0 0.00000 98 98 1.00000 1 | 1 1 2 0 p1 21 191 98 0.51309 98 0 0.00000 98 98 1.00000 1 | ||||
2 1 2 0 other 30 200 107 0.53500 128 21 0.19626 128 128 0.83594 1 | 2 1 2 0 other 30 200 107 0.53500 128 21 0.19626 128 128 0.83594 1 | ||||
$ hg debugupgraderepo --run --optimize 're-delta-all' | $ hg debugupgraderepo --run --optimize 're-delta-all' | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !) | ||||
optimisations: re-delta-all | optimisations: re-delta-all | ||||
re-delta-all | re-delta-all | ||||
deltas within internal storage will be fully recomputed; this will likely drastically slow down execution time | deltas within internal storage will be fully recomputed; this will likely drastically slow down execution time | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
migrating 1 filelogs containing 3 revisions (320 bytes in store; 573 bytes tracked data) | migrating 1 filelogs containing 3 revisions (320 bytes in store; 573 bytes tracked data) | ||||
finished migrating 3 filelog revisions across 1 filelogs; change in size: -9 bytes | finished migrating 3 filelog revisions across 1 filelogs; change in size: -9 bytes | ||||
migrating 1 manifests containing 3 revisions (333 bytes in store; 138 bytes tracked data) | migrating 1 manifests containing 3 revisions (333 bytes in store; 138 bytes tracked data) | ||||
finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | finished migrating 3 manifest revisions across 1 manifests; change in size: 0 bytes | ||||
migrating changelog containing 3 revisions (366 bytes in store; 171 bytes tracked data) | migrating changelog containing 3 revisions (366 bytes in store; 171 bytes tracked data) | ||||
finished migrating 3 changelog revisions; change in size: 0 bytes | finished migrating 3 changelog revisions; change in size: 0 bytes | ||||
finished migrating 9 total revisions; total change in store size: -9 bytes | finished migrating 9 total revisions; total change in store size: -9 bytes | ||||
copying phaseroots | copying phaseroots | ||||
copying requires | |||||
data fully upgraded in a temporary repository | data fully upgraded in a temporary repository | ||||
marking source repository as being upgraded; clients will be unable to read from repository | marking source repository as being upgraded; clients will be unable to read from repository | ||||
starting in-place swap of repository data | starting in-place swap of repository data | ||||
replaced files will be backed up at $TESTTMP/localconfig/.hg/upgradebackup.* (glob) | replaced files will be backed up at $TESTTMP/localconfig/.hg/upgradebackup.* (glob) | ||||
replacing store... | replacing store... | ||||
store replacement complete; repository was inconsistent for *s (glob) | store replacement complete; repository was inconsistent for *s (glob) | ||||
finalizing requirements file and making repository readable again | finalizing requirements file and making repository readable again | ||||
removing temporary repository $TESTTMP/localconfig/.hg/upgrade.* (glob) | removing temporary repository $TESTTMP/localconfig/.hg/upgrade.* (glob) | ||||
$ hg add foo | $ hg add foo | ||||
$ hg -q commit -m "foo" | $ hg -q commit -m "foo" | ||||
$ hg debugrequires | $ hg debugrequires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
store | store | ||||
Check that we can add the sparse-revlog format requirement | Check that we can add the sparse-revlog format requirement | ||||
$ hg --config format.sparse-revlog=yes debugupgraderepo --run --quiet | $ hg --config format.sparse-revlog=yes debugupgraderepo --run --quiet | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !) | ||||
added: sparserevlog | added: sparserevlog | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
$ hg debugrequires | $ hg debugrequires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
Check that we can remove the sparse-revlog format requirement | Check that we can remove the sparse-revlog format requirement | ||||
$ hg --config format.sparse-revlog=no debugupgraderepo --run --quiet | $ hg --config format.sparse-revlog=no debugupgraderepo --run --quiet | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !) | ||||
removed: sparserevlog | removed: sparserevlog | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
$ hg debugrequires | $ hg debugrequires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
store | store | ||||
#if zstd | #if zstd | ||||
Check upgrading to a zstd revlog | Check upgrading to a zstd revlog | ||||
-------------------------------- | -------------------------------- | ||||
upgrade | upgrade | ||||
$ hg --config format.revlog-compression=zstd debugupgraderepo --run --no-backup --quiet | $ hg --config format.revlog-compression=zstd debugupgraderepo --run --no-backup --quiet | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, store (rust !) | ||||
added: revlog-compression-zstd, sparserevlog | added: revlog-compression-zstd, sparserevlog | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
$ hg debugformat -v | $ hg debugformat -v | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: yes yes yes | fncache: yes yes yes | ||||
dirstate-v2: no no no | dirstate-v2: no no no | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: yes yes yes | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no (no-rust !) | persistent-nodemap: no no no (no-rust !) | ||||
persistent-nodemap: yes yes no (rust !) | persistent-nodemap: yes yes no (rust !) | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
changelog-v2: no no no | changelog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib (no-zstd !) | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zlib zstd (zstd !) | compression: zstd zlib zstd (zstd !) | ||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugrequires | $ hg debugrequires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd | revlog-compression-zstd | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
downgrade | downgrade | ||||
$ hg debugupgraderepo --run --no-backup --quiet | $ hg debugupgraderepo --run --no-backup --quiet | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !) | ||||
removed: revlog-compression-zstd | removed: revlog-compression-zstd | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
$ hg debugformat -v | $ hg debugformat -v | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: yes yes yes | fncache: yes yes yes | ||||
dirstate-v2: no no no | dirstate-v2: no no no | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: yes yes yes | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no (no-rust !) | persistent-nodemap: no no no (no-rust !) | ||||
persistent-nodemap: yes yes no (rust !) | persistent-nodemap: yes yes no (rust !) | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
changelog-v2: no no no | changelog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib (no-zstd !) | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zlib zlib zstd (zstd !) | compression: zlib zlib zstd (zstd !) | ||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugrequires | $ hg debugrequires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
upgrade from hgrc | upgrade from hgrc | ||||
$ cat >> .hg/hgrc << EOF | $ cat >> .hg/hgrc << EOF | ||||
> [format] | > [format] | ||||
> revlog-compression=zstd | > revlog-compression=zstd | ||||
> EOF | > EOF | ||||
$ hg debugupgraderepo --run --no-backup --quiet | $ hg debugupgraderepo --run --no-backup --quiet | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-rust !) | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (rust !) | ||||
added: revlog-compression-zstd | added: revlog-compression-zstd | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
$ hg debugformat -v | $ hg debugformat -v | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: yes yes yes | fncache: yes yes yes | ||||
dirstate-v2: no no no | dirstate-v2: no no no | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: yes yes yes | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no (no-rust !) | persistent-nodemap: no no no (no-rust !) | ||||
persistent-nodemap: yes yes no (rust !) | persistent-nodemap: yes yes no (rust !) | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
changelog-v2: no no no | changelog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib (no-zstd !) | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | compression: zstd zstd zstd (zstd !) | ||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugrequires | $ hg debugrequires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd | revlog-compression-zstd | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
#endif | #endif | ||||
Check upgrading to a revlog format supporting sidedata | Check upgrading to a revlog format supporting sidedata | ||||
------------------------------------------------------ | ------------------------------------------------------ | ||||
upgrade | upgrade | ||||
$ hg debugsidedata -c 0 | $ hg debugsidedata -c 0 | ||||
$ hg --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data debugupgraderepo --run --no-backup --config "extensions.sidedata=$TESTDIR/testlib/ext-sidedata.py" --quiet | $ hg --config experimental.revlogv2=enable-unstable-format-and-corrupt-my-data debugupgraderepo --run --no-backup --config "extensions.sidedata=$TESTDIR/testlib/ext-sidedata.py" --quiet | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, store (no-zstd !) | preserved: dotencode, fncache, generaldelta, share-safe, store (no-zstd !) | ||||
preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, sparserevlog, store (zstd no-rust !) | preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, share-safe, sparserevlog, store (zstd no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, share-safe, sparserevlog, store (rust !) | ||||
removed: revlogv1 | removed: revlogv1 | ||||
added: exp-revlogv2.2 (zstd !) | added: exp-revlogv2.2 (zstd !) | ||||
added: exp-revlogv2.2, sparserevlog (no-zstd !) | added: exp-revlogv2.2, sparserevlog (no-zstd !) | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
$ hg debugformat -v | $ hg debugformat -v | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: yes yes yes | fncache: yes yes yes | ||||
dirstate-v2: no no no | dirstate-v2: no no no | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: yes yes yes | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no (no-rust !) | persistent-nodemap: no no no (no-rust !) | ||||
persistent-nodemap: yes yes no (rust !) | persistent-nodemap: yes yes no (rust !) | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: yes no no | revlog-v2: yes no no | ||||
changelog-v2: no no no | changelog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib (no-zstd !) | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | compression: zstd zstd zstd (zstd !) | ||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugrequires | $ hg debugrequires | ||||
dotencode | dotencode | ||||
exp-revlogv2.2 | exp-revlogv2.2 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ hg debugsidedata -c 0 | $ hg debugsidedata -c 0 | ||||
2 sidedata entries | 2 sidedata entries | ||||
entry-0001 size 4 | entry-0001 size 4 | ||||
entry-0002 size 32 | entry-0002 size 32 | ||||
downgrade | downgrade | ||||
$ hg debugupgraderepo --config experimental.revlogv2=no --run --no-backup --quiet | $ hg debugupgraderepo --config experimental.revlogv2=no --run --no-backup --quiet | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, sparserevlog, store (no-zstd !) | preserved: dotencode, fncache, generaldelta, share-safe, sparserevlog, store (no-zstd !) | ||||
preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, sparserevlog, store (zstd no-rust !) | preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, share-safe, sparserevlog, store (zstd no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, share-safe, sparserevlog, store (rust !) | ||||
removed: exp-revlogv2.2 | removed: exp-revlogv2.2 | ||||
added: revlogv1 | added: revlogv1 | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
$ hg debugformat -v | $ hg debugformat -v | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: yes yes yes | fncache: yes yes yes | ||||
dirstate-v2: no no no | dirstate-v2: no no no | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: yes yes yes | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no (no-rust !) | persistent-nodemap: no no no (no-rust !) | ||||
persistent-nodemap: yes yes no (rust !) | persistent-nodemap: yes yes no (rust !) | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
changelog-v2: no no no | changelog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib (no-zstd !) | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | compression: zstd zstd zstd (zstd !) | ||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugrequires | $ hg debugrequires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ hg debugsidedata -c 0 | $ hg debugsidedata -c 0 | ||||
upgrade from hgrc | upgrade from hgrc | ||||
$ cat >> .hg/hgrc << EOF | $ cat >> .hg/hgrc << EOF | ||||
> [experimental] | > [experimental] | ||||
> revlogv2=enable-unstable-format-and-corrupt-my-data | > revlogv2=enable-unstable-format-and-corrupt-my-data | ||||
> EOF | > EOF | ||||
$ hg debugupgraderepo --run --no-backup --quiet | $ hg debugupgraderepo --run --no-backup --quiet | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, sparserevlog, store (no-zstd !) | preserved: dotencode, fncache, generaldelta, share-safe, sparserevlog, store (no-zstd !) | ||||
preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, sparserevlog, store (zstd no-rust !) | preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, share-safe, sparserevlog, store (zstd no-rust !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, sparserevlog, store (rust !) | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, share-safe, sparserevlog, store (rust !) | ||||
removed: revlogv1 | removed: revlogv1 | ||||
added: exp-revlogv2.2 | added: exp-revlogv2.2 | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
$ hg debugformat -v | $ hg debugformat -v | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: yes yes yes | fncache: yes yes yes | ||||
dirstate-v2: no no no | dirstate-v2: no no no | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: yes yes yes | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no (no-rust !) | persistent-nodemap: no no no (no-rust !) | ||||
persistent-nodemap: yes yes no (rust !) | persistent-nodemap: yes yes no (rust !) | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: yes yes no | revlog-v2: yes yes no | ||||
changelog-v2: no no no | changelog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib (no-zstd !) | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | compression: zstd zstd zstd (zstd !) | ||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugrequires | $ hg debugrequires | ||||
dotencode | dotencode | ||||
exp-revlogv2.2 | exp-revlogv2.2 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
persistent-nodemap (rust !) | persistent-nodemap (rust !) | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
share-safe | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ hg debugsidedata -c 0 | $ hg debugsidedata -c 0 | ||||
Demonstrate that nothing to perform upgrade will still run all the way through | Demonstrate that nothing to perform upgrade will still run all the way through | ||||
$ hg debugupgraderepo --run | $ hg debugupgraderepo --run | ||||
nothing to do | nothing to do |
repositories more consistent across repositories? I'm not 100% sure what the original intention was