As see in changeset bb271ec2fbfb, zstd is 20% to 50% faster for reading and
writing.
Use take advantage of the new config behavior to try zstd by default, falling
back to zlib is zstd is not available on that plateform.
As see in changeset bb271ec2fbfb, zstd is 20% to 50% faster for reading and
writing.
Use take advantage of the new config behavior to try zstd by default, falling
back to zlib is zstd is not available on that plateform.
Automatic diff as part of commit; lint not applicable. |
Automatic diff as part of commit; unit tests not applicable. |
Funny how most of the examples in tests are actually larger in zstd. Not that it makes any difference, cool that this change is finally happening!
✅ refresh by Heptapod after a successful CI run (🐙 💚)
coreconfigitem( | coreconfigitem( | ||||
b'format', | b'format', | ||||
b'sparse-revlog', | b'sparse-revlog', | ||||
default=True, | default=True, | ||||
) | ) | ||||
coreconfigitem( | coreconfigitem( | ||||
b'format', | b'format', | ||||
b'revlog-compression', | b'revlog-compression', | ||||
default=lambda: [b'zlib'], | default=lambda: [b'zstd', b'zlib'], | ||||
alias=[(b'experimental', b'format.compression')], | alias=[(b'experimental', b'format.compression')], | ||||
) | ) | ||||
coreconfigitem( | coreconfigitem( | ||||
b'format', | b'format', | ||||
b'usefncache', | b'usefncache', | ||||
default=True, | default=True, | ||||
) | ) | ||||
coreconfigitem( | coreconfigitem( |
Compression algorithm used by revlog. Supported values are `zlib` and | Compression algorithm used by revlog. Supported values are `zlib` and | ||||
`zstd`. The `zlib` engine is the historical default of Mercurial. `zstd` is | `zstd`. The `zlib` engine is the historical default of Mercurial. `zstd` is | ||||
a newer format that is usually a net win over `zlib`, operating faster at | a newer format that is usually a net win over `zlib`, operating faster at | ||||
better compression rates. Use `zstd` to reduce CPU usage. Multiple values | better compression rates. Use `zstd` to reduce CPU usage. Multiple values | ||||
can be specified, the first available one will be used. | can be specified, the first available one will be used. | ||||
On some systems, the Mercurial installation may lack `zstd` support. | On some systems, the Mercurial installation may lack `zstd` support. | ||||
Default is `zlib`. | Default is `zstd` if available, `zlib` otherwise. | ||||
``bookmarks-in-store`` | ``bookmarks-in-store`` | ||||
Store bookmarks in .hg/store/. This means that bookmarks are shared when | Store bookmarks in .hg/store/. This means that bookmarks are shared when | ||||
using `hg share` regardless of the `-B` option. | using `hg share` regardless of the `-B` option. | ||||
Repositories with this on-disk format require Mercurial version 5.1. | Repositories with this on-disk format require Mercurial version 5.1. | ||||
Disabled by default. | Disabled by default. |
chainbase = cl.chainbase | chainbase = cl.chainbase | ||||
return all(rev == chainbase(rev) for rev in cl) | return all(rev == chainbase(rev) for rev in cl) | ||||
@staticmethod | @staticmethod | ||||
def fromconfig(repo): | def fromconfig(repo): | ||||
return True | return True | ||||
_has_zstd = ( | |||||
b'zstd' in util.compengines | |||||
and util.compengines[b'zstd'].available() | |||||
and util.compengines[b'zstd'].revlogheader() | |||||
) | |||||
@registerformatvariant | @registerformatvariant | ||||
class compressionengine(formatvariant): | class compressionengine(formatvariant): | ||||
name = b'compression' | name = b'compression' | ||||
if _has_zstd: | |||||
default = b'zstd' | |||||
else: | |||||
default = b'zlib' | default = b'zlib' | ||||
description = _( | description = _( | ||||
b'Compresion algorithm used to compress data. ' | b'Compresion algorithm used to compress data. ' | ||||
b'Some engine are faster than other' | b'Some engine are faster than other' | ||||
) | ) | ||||
upgrademessage = _( | upgrademessage = _( | ||||
b'revlog content will be recompressed with the new algorithm.' | b'revlog content will be recompressed with the new algorithm.' |
(use 'hg debugcreatestreamclonebundle') | (use 'hg debugcreatestreamclonebundle') | ||||
[10] | [10] | ||||
packed1 is produced properly | packed1 is produced properly | ||||
#if reporevlogstore | #if reporevlogstore | ||||
$ hg -R test debugcreatestreamclonebundle packed.hg | $ hg -R test debugcreatestreamclonebundle packed.hg | ||||
writing 2664 bytes for 6 files | writing 2664 bytes for 6 files (no-zstd !) | ||||
writing 2665 bytes for 6 files (zstd !) | |||||
bundle requirements: generaldelta, revlogv1, sparserevlog | bundle requirements: generaldelta, revlogv1, sparserevlog | ||||
$ f -B 64 --size --sha1 --hexdump packed.hg | $ f -B 64 --size --sha1 --hexdump packed.hg | ||||
packed.hg: size=2840, sha1=12bf3eee3eb8a04c503ce2d29b48f0135c7edff5 | packed.hg: size=2840, sha1=12bf3eee3eb8a04c503ce2d29b48f0135c7edff5 (no-zstd !) | ||||
packed.hg: size=2841, sha1=8b645a65f49b0ae43042a9f3da56d4bfdf1c7f99 (zstd !) | |||||
0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 06 00 00 |HGS1UN..........| | 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 06 00 00 |HGS1UN..........| | ||||
0010: 00 00 00 00 0a 68 00 23 67 65 6e 65 72 61 6c 64 |.....h.#generald| | 0010: 00 00 00 00 0a 68 00 23 67 65 6e 65 72 61 6c 64 |.....h.#generald| (no-zstd !) | ||||
0010: 00 00 00 00 0a 69 00 23 67 65 6e 65 72 61 6c 64 |.....i.#generald| (zstd !) | |||||
0020: 65 6c 74 61 2c 72 65 76 6c 6f 67 76 31 2c 73 70 |elta,revlogv1,sp| | 0020: 65 6c 74 61 2c 72 65 76 6c 6f 67 76 31 2c 73 70 |elta,revlogv1,sp| | ||||
0030: 61 72 73 65 72 65 76 6c 6f 67 00 64 61 74 61 2f |arserevlog.data/| | 0030: 61 72 73 65 72 65 76 6c 6f 67 00 64 61 74 61 2f |arserevlog.data/| | ||||
$ hg debugbundle --spec packed.hg | $ hg debugbundle --spec packed.hg | ||||
none-packed1;requirements%3Dgeneraldelta%2Crevlogv1%2Csparserevlog | none-packed1;requirements%3Dgeneraldelta%2Crevlogv1%2Csparserevlog | ||||
generaldelta requirement is not listed in stream clone bundles unless used | generaldelta requirement is not listed in stream clone bundles unless used | ||||
$ cat hg.pid > $DAEMON_PIDS | $ cat hg.pid > $DAEMON_PIDS | ||||
$ cd .. | $ cd .. | ||||
Basic clone | Basic clone | ||||
#if stream-legacy | #if stream-legacy | ||||
$ hg clone --stream -U http://localhost:$HGPORT clone1 | $ hg clone --stream -U http://localhost:$HGPORT clone1 | ||||
streaming all changes | streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | 1027 files to transfer, 96.3 KB of data (no-zstd !) | ||||
transferred 96.3 KB in * seconds (*/sec) (glob) | transferred 96.3 KB in * seconds (*/sec) (glob) (no-zstd !) | ||||
1027 files to transfer, 93.5 KB of data (zstd !) | |||||
transferred 93.5 KB in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
#endif | #endif | ||||
#if stream-bundle2 | #if stream-bundle2 | ||||
$ hg clone --stream -U http://localhost:$HGPORT clone1 | $ hg clone --stream -U http://localhost:$HGPORT clone1 | ||||
streaming all changes | streaming all changes | ||||
1030 files to transfer, 96.5 KB of data | 1030 files to transfer, 96.5 KB of data (no-zstd !) | ||||
transferred 96.5 KB in * seconds (* */sec) (glob) | transferred 96.5 KB in * seconds (*/sec) (glob) (no-zstd !) | ||||
1030 files to transfer, 93.6 KB of data (zstd !) | |||||
transferred 93.6 KB in * seconds (* */sec) (glob) (zstd !) | |||||
$ ls -1 clone1/.hg/cache | $ ls -1 clone1/.hg/cache | ||||
branch2-base | branch2-base | ||||
branch2-immutable | branch2-immutable | ||||
branch2-served | branch2-served | ||||
branch2-served.hidden | branch2-served.hidden | ||||
branch2-visible | branch2-visible | ||||
branch2-visible-hidden | branch2-visible-hidden | ||||
hgtagsfnodes1 | hgtagsfnodes1 | ||||
rbc-names-v1 | rbc-names-v1 | ||||
rbc-revs-v1 | rbc-revs-v1 | ||||
tags2 | tags2 | ||||
tags2-served | tags2-served | ||||
#endif | #endif | ||||
getbundle requests with stream=1 are uncompressed | getbundle requests with stream=1 are uncompressed | ||||
$ get-with-headers.py $LOCALIP:$HGPORT '?cmd=getbundle' content-type --bodyfile body --hgproto '0.1 0.2 comp=zlib,none' --requestheader "x-hgarg-1=bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Aphases%253Dheads%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps&cg=0&common=0000000000000000000000000000000000000000&heads=c17445101a72edac06facd130d14808dfbd5c7c2&stream=1" | $ get-with-headers.py $LOCALIP:$HGPORT '?cmd=getbundle' content-type --bodyfile body --hgproto '0.1 0.2 comp=zlib,none' --requestheader "x-hgarg-1=bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Aphases%253Dheads%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps&cg=0&common=0000000000000000000000000000000000000000&heads=c17445101a72edac06facd130d14808dfbd5c7c2&stream=1" | ||||
200 Script output follows | 200 Script output follows | ||||
content-type: application/mercurial-0.2 | content-type: application/mercurial-0.2 | ||||
$ f --size --hex --bytes 256 body | $ f --size --hex --bytes 256 body | ||||
body: size=112262 | body: size=112262 (no-zstd !) | ||||
body: size=109410 (zstd !) | |||||
0000: 04 6e 6f 6e 65 48 47 32 30 00 00 00 00 00 00 00 |.noneHG20.......| | 0000: 04 6e 6f 6e 65 48 47 32 30 00 00 00 00 00 00 00 |.noneHG20.......| | ||||
0010: 7f 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 |..STREAM2.......| | 0010: 7f 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 |..STREAM2.......| (no-zstd !) | ||||
0020: 05 09 04 0c 44 62 79 74 65 63 6f 75 6e 74 39 38 |....Dbytecount98| | 0020: 05 09 04 0c 44 62 79 74 65 63 6f 75 6e 74 39 38 |....Dbytecount98| (no-zstd !) | ||||
0030: 37 37 35 66 69 6c 65 63 6f 75 6e 74 31 30 33 30 |775filecount1030| | 0030: 37 37 35 66 69 6c 65 63 6f 75 6e 74 31 30 33 30 |775filecount1030| (no-zstd !) | ||||
0010: 99 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 |..STREAM2.......| (zstd !) | |||||
0020: 05 09 04 0c 5e 62 79 74 65 63 6f 75 6e 74 39 35 |....^bytecount95| (zstd !) | |||||
0030: 38 39 37 66 69 6c 65 63 6f 75 6e 74 31 30 33 30 |897filecount1030| (zstd !) | |||||
0040: 72 65 71 75 69 72 65 6d 65 6e 74 73 64 6f 74 65 |requirementsdote| | 0040: 72 65 71 75 69 72 65 6d 65 6e 74 73 64 6f 74 65 |requirementsdote| | ||||
0050: 6e 63 6f 64 65 25 32 43 66 6e 63 61 63 68 65 25 |ncode%2Cfncache%| | 0050: 6e 63 6f 64 65 25 32 43 66 6e 63 61 63 68 65 25 |ncode%2Cfncache%| | ||||
0060: 32 43 67 65 6e 65 72 61 6c 64 65 6c 74 61 25 32 |2Cgeneraldelta%2| | 0060: 32 43 67 65 6e 65 72 61 6c 64 65 6c 74 61 25 32 |2Cgeneraldelta%2| | ||||
0070: 43 72 65 76 6c 6f 67 76 31 25 32 43 73 70 61 72 |Crevlogv1%2Cspar| | 0070: 43 72 65 76 6c 6f 67 76 31 25 32 43 73 70 61 72 |Crevlogv1%2Cspar| (no-zstd !) | ||||
0080: 73 65 72 65 76 6c 6f 67 25 32 43 73 74 6f 72 65 |serevlog%2Cstore| | 0080: 73 65 72 65 76 6c 6f 67 25 32 43 73 74 6f 72 65 |serevlog%2Cstore| (no-zstd !) | ||||
0090: 00 00 80 00 73 08 42 64 61 74 61 2f 30 2e 69 00 |....s.Bdata/0.i.| | 0090: 00 00 80 00 73 08 42 64 61 74 61 2f 30 2e 69 00 |....s.Bdata/0.i.| (no-zstd !) | ||||
00a0: 03 00 01 00 00 00 00 00 00 00 02 00 00 00 01 00 |................| | 00a0: 03 00 01 00 00 00 00 00 00 00 02 00 00 00 01 00 |................| (no-zstd !) | ||||
00b0: 00 00 00 00 00 00 01 ff ff ff ff ff ff ff ff 80 |................| | 00b0: 00 00 00 00 00 00 01 ff ff ff ff ff ff ff ff 80 |................| (no-zstd !) | ||||
00c0: 29 63 a0 49 d3 23 87 bf ce fe 56 67 92 67 2c 69 |)c.I.#....Vg.g,i| | 00c0: 29 63 a0 49 d3 23 87 bf ce fe 56 67 92 67 2c 69 |)c.I.#....Vg.g,i| (no-zstd !) | ||||
00d0: d1 ec 39 00 00 00 00 00 00 00 00 00 00 00 00 75 |..9............u| | 00d0: d1 ec 39 00 00 00 00 00 00 00 00 00 00 00 00 75 |..9............u| (no-zstd !) | ||||
00e0: 30 73 08 42 64 61 74 61 2f 31 2e 69 00 03 00 01 |0s.Bdata/1.i....| | 00e0: 30 73 08 42 64 61 74 61 2f 31 2e 69 00 03 00 01 |0s.Bdata/1.i....| (no-zstd !) | ||||
00f0: 00 00 00 00 00 00 00 02 00 00 00 01 00 00 00 00 |................| | 00f0: 00 00 00 00 00 00 00 02 00 00 00 01 00 00 00 00 |................| (no-zstd !) | ||||
0070: 43 72 65 76 6c 6f 67 2d 63 6f 6d 70 72 65 73 73 |Crevlog-compress| (zstd !) | |||||
0080: 69 6f 6e 2d 7a 73 74 64 25 32 43 72 65 76 6c 6f |ion-zstd%2Crevlo| (zstd !) | |||||
0090: 67 76 31 25 32 43 73 70 61 72 73 65 72 65 76 6c |gv1%2Csparserevl| (zstd !) | |||||
00a0: 6f 67 25 32 43 73 74 6f 72 65 00 00 80 00 73 08 |og%2Cstore....s.| (zstd !) | |||||
00b0: 42 64 61 74 61 2f 30 2e 69 00 03 00 01 00 00 00 |Bdata/0.i.......| (zstd !) | |||||
00c0: 00 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 |................| (zstd !) | |||||
00d0: 01 ff ff ff ff ff ff ff ff 80 29 63 a0 49 d3 23 |..........)c.I.#| (zstd !) | |||||
00e0: 87 bf ce fe 56 67 92 67 2c 69 d1 ec 39 00 00 00 |....Vg.g,i..9...| (zstd !) | |||||
00f0: 00 00 00 00 00 00 00 00 00 75 30 73 08 42 64 61 |.........u0s.Bda| (zstd !) | |||||
--uncompressed is an alias to --stream | --uncompressed is an alias to --stream | ||||
#if stream-legacy | #if stream-legacy | ||||
$ hg clone --uncompressed -U http://localhost:$HGPORT clone1-uncompressed | $ hg clone --uncompressed -U http://localhost:$HGPORT clone1-uncompressed | ||||
streaming all changes | streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | 1027 files to transfer, 96.3 KB of data (no-zstd !) | ||||
transferred 96.3 KB in * seconds (*/sec) (glob) | transferred 96.3 KB in * seconds (*/sec) (glob) (no-zstd !) | ||||
1027 files to transfer, 93.5 KB of data (zstd !) | |||||
transferred 93.5 KB in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
#endif | #endif | ||||
#if stream-bundle2 | #if stream-bundle2 | ||||
$ hg clone --uncompressed -U http://localhost:$HGPORT clone1-uncompressed | $ hg clone --uncompressed -U http://localhost:$HGPORT clone1-uncompressed | ||||
streaming all changes | streaming all changes | ||||
1030 files to transfer, 96.5 KB of data | 1030 files to transfer, 96.5 KB of data (no-zstd !) | ||||
transferred 96.5 KB in * seconds (* */sec) (glob) | transferred 96.5 KB in * seconds (* */sec) (glob) (no-zstd !) | ||||
1030 files to transfer, 93.6 KB of data (zstd !) | |||||
transferred 93.6 KB in * seconds (* */sec) (glob) (zstd !) | |||||
#endif | #endif | ||||
Clone with background file closing enabled | Clone with background file closing enabled | ||||
#if stream-legacy | #if stream-legacy | ||||
$ hg --debug --config worker.backgroundclose=true --config worker.backgroundcloseminfilecount=1 clone --stream -U http://localhost:$HGPORT clone-background | grep -v adding | $ hg --debug --config worker.backgroundclose=true --config worker.backgroundcloseminfilecount=1 clone --stream -U http://localhost:$HGPORT clone-background | grep -v adding | ||||
using http://localhost:$HGPORT/ | using http://localhost:$HGPORT/ | ||||
sending capabilities command | sending capabilities command | ||||
sending branchmap command | sending branchmap command | ||||
streaming all changes | streaming all changes | ||||
sending stream_out command | sending stream_out command | ||||
1027 files to transfer, 96.3 KB of data | 1027 files to transfer, 96.3 KB of data (no-zstd !) | ||||
1027 files to transfer, 93.5 KB of data (zstd !) | |||||
starting 4 threads for background file closing | starting 4 threads for background file closing | ||||
updating the branch cache | updating the branch cache | ||||
transferred 96.3 KB in * seconds (*/sec) (glob) | transferred 96.3 KB in * seconds (*/sec) (glob) (no-zstd !) | ||||
transferred 93.5 KB in * seconds (* */sec) (glob) (zstd !) | |||||
query 1; heads | query 1; heads | ||||
sending batch command | sending batch command | ||||
searching for changes | searching for changes | ||||
all remote heads known locally | all remote heads known locally | ||||
no changes found | no changes found | ||||
sending getbundle command | sending getbundle command | ||||
bundle2-input-bundle: with-transaction | bundle2-input-bundle: with-transaction | ||||
bundle2-input-part: "listkeys" (params: 1 mandatory) supported | bundle2-input-part: "listkeys" (params: 1 mandatory) supported | ||||
sending capabilities command | sending capabilities command | ||||
query 1; heads | query 1; heads | ||||
sending batch command | sending batch command | ||||
streaming all changes | streaming all changes | ||||
sending getbundle command | sending getbundle command | ||||
bundle2-input-bundle: with-transaction | bundle2-input-bundle: with-transaction | ||||
bundle2-input-part: "stream2" (params: 3 mandatory) supported | bundle2-input-part: "stream2" (params: 3 mandatory) supported | ||||
applying stream bundle | applying stream bundle | ||||
1030 files to transfer, 96.5 KB of data | 1030 files to transfer, 96.5 KB of data (no-zstd !) | ||||
1030 files to transfer, 93.6 KB of data (zstd !) | |||||
starting 4 threads for background file closing | starting 4 threads for background file closing | ||||
starting 4 threads for background file closing | starting 4 threads for background file closing | ||||
updating the branch cache | updating the branch cache | ||||
transferred 96.5 KB in * seconds (* */sec) (glob) | transferred 96.5 KB in * seconds (* */sec) (glob) (no-zstd !) | ||||
bundle2-input-part: total payload size 112094 | bundle2-input-part: total payload size 112094 (no-zstd !) | ||||
transferred 93.6 KB in * seconds (* */sec) (glob) (zstd !) | |||||
bundle2-input-part: total payload size 109216 (zstd !) | |||||
bundle2-input-part: "listkeys" (params: 1 mandatory) supported | bundle2-input-part: "listkeys" (params: 1 mandatory) supported | ||||
bundle2-input-bundle: 2 parts total | bundle2-input-bundle: 2 parts total | ||||
checking for updated bookmarks | checking for updated bookmarks | ||||
updating the branch cache | updating the branch cache | ||||
(sent 3 HTTP requests and * bytes; received * bytes in responses) (glob) | (sent 3 HTTP requests and * bytes; received * bytes in responses) (glob) | ||||
#endif | #endif | ||||
Cannot stream clone when there are secret changesets | Cannot stream clone when there are secret changesets | ||||
$ cd server | $ cd server | ||||
$ hg serve --config server.uncompressedallowsecret=true -p $HGPORT -d --pid-file=hg.pid | $ hg serve --config server.uncompressedallowsecret=true -p $HGPORT -d --pid-file=hg.pid | ||||
$ cat hg.pid > $DAEMON_PIDS | $ cat hg.pid > $DAEMON_PIDS | ||||
$ cd .. | $ cd .. | ||||
#if stream-legacy | #if stream-legacy | ||||
$ hg clone --stream -U http://localhost:$HGPORT secret-allowed | $ hg clone --stream -U http://localhost:$HGPORT secret-allowed | ||||
streaming all changes | streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | 1027 files to transfer, 96.3 KB of data (no-zstd !) | ||||
transferred 96.3 KB in * seconds (*/sec) (glob) | transferred 96.3 KB in * seconds (*/sec) (glob) (no-zstd !) | ||||
1027 files to transfer, 93.5 KB of data (zstd !) | |||||
transferred 93.5 KB in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
#endif | #endif | ||||
#if stream-bundle2 | #if stream-bundle2 | ||||
$ hg clone --stream -U http://localhost:$HGPORT secret-allowed | $ hg clone --stream -U http://localhost:$HGPORT secret-allowed | ||||
streaming all changes | streaming all changes | ||||
1030 files to transfer, 96.5 KB of data | 1030 files to transfer, 96.5 KB of data (no-zstd !) | ||||
transferred 96.5 KB in * seconds (* */sec) (glob) | transferred 96.5 KB in * seconds (* */sec) (glob) (no-zstd !) | ||||
1030 files to transfer, 93.6 KB of data (zstd !) | |||||
transferred 93.6 KB in * seconds (* */sec) (glob) (zstd !) | |||||
#endif | #endif | ||||
$ killdaemons.py | $ killdaemons.py | ||||
Verify interaction between preferuncompressed and secret presence | Verify interaction between preferuncompressed and secret presence | ||||
$ cd server | $ cd server | ||||
$ hg serve --config server.preferuncompressed=true -p $HGPORT -d --pid-file=hg.pid | $ hg serve --config server.preferuncompressed=true -p $HGPORT -d --pid-file=hg.pid | ||||
$ hg -R server bookmark -r tip some-bookmark | $ hg -R server bookmark -r tip some-bookmark | ||||
clone it | clone it | ||||
#if stream-legacy | #if stream-legacy | ||||
$ hg clone --stream http://localhost:$HGPORT with-bookmarks | $ hg clone --stream http://localhost:$HGPORT with-bookmarks | ||||
streaming all changes | streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | 1027 files to transfer, 96.3 KB of data (no-zstd !) | ||||
transferred 96.3 KB in * seconds (*) (glob) | transferred 96.3 KB in * seconds (*) (glob) (no-zstd !) | ||||
1027 files to transfer, 93.5 KB of data (zstd !) | |||||
transferred 93.5 KB in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
updating to branch default | updating to branch default | ||||
1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
#endif | #endif | ||||
#if stream-bundle2 | #if stream-bundle2 | ||||
$ hg clone --stream http://localhost:$HGPORT with-bookmarks | $ hg clone --stream http://localhost:$HGPORT with-bookmarks | ||||
streaming all changes | streaming all changes | ||||
1033 files to transfer, 96.6 KB of data | 1033 files to transfer, 96.6 KB of data (no-zstd !) | ||||
transferred 96.6 KB in * seconds (* */sec) (glob) | transferred 96.6 KB in * seconds (* */sec) (glob) (no-zstd !) | ||||
1033 files to transfer, 93.8 KB of data (zstd !) | |||||
transferred 93.8 KB in * seconds (* */sec) (glob) (zstd !) | |||||
updating to branch default | updating to branch default | ||||
1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
#endif | #endif | ||||
$ hg -R with-bookmarks bookmarks | $ hg -R with-bookmarks bookmarks | ||||
some-bookmark 1:c17445101a72 | some-bookmark 1:c17445101a72 | ||||
Stream repository with phases | Stream repository with phases | ||||
----------------------------- | ----------------------------- | ||||
Clone as publishing | Clone as publishing | ||||
$ hg -R server phase -r 'all()' | $ hg -R server phase -r 'all()' | ||||
0: draft | 0: draft | ||||
1: draft | 1: draft | ||||
#if stream-legacy | #if stream-legacy | ||||
$ hg clone --stream http://localhost:$HGPORT phase-publish | $ hg clone --stream http://localhost:$HGPORT phase-publish | ||||
streaming all changes | streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | 1027 files to transfer, 96.3 KB of data (no-zstd !) | ||||
transferred 96.3 KB in * seconds (*) (glob) | transferred 96.3 KB in * seconds (*) (glob) (no-zstd !) | ||||
1027 files to transfer, 93.5 KB of data (zstd !) | |||||
transferred 93.5 KB in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
updating to branch default | updating to branch default | ||||
1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
#endif | #endif | ||||
#if stream-bundle2 | #if stream-bundle2 | ||||
$ hg clone --stream http://localhost:$HGPORT phase-publish | $ hg clone --stream http://localhost:$HGPORT phase-publish | ||||
streaming all changes | streaming all changes | ||||
1033 files to transfer, 96.6 KB of data | 1033 files to transfer, 96.6 KB of data (no-zstd !) | ||||
transferred 96.6 KB in * seconds (* */sec) (glob) | transferred 96.6 KB in * seconds (* */sec) (glob) (no-zstd !) | ||||
1033 files to transfer, 93.8 KB of data (zstd !) | |||||
transferred 93.8 KB in * seconds (* */sec) (glob) (zstd !) | |||||
updating to branch default | updating to branch default | ||||
1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
#endif | #endif | ||||
$ hg -R phase-publish phase -r 'all()' | $ hg -R phase-publish phase -r 'all()' | ||||
0: public | 0: public | ||||
1: public | 1: public | ||||
Clone as non publishing | Clone as non publishing | ||||
$ cat << EOF >> server/.hg/hgrc | $ cat << EOF >> server/.hg/hgrc | ||||
> [phases] | > [phases] | ||||
> publish = False | > publish = False | ||||
> EOF | > EOF | ||||
$ killdaemons.py | $ killdaemons.py | ||||
$ hg -R server serve -p $HGPORT -d --pid-file=hg.pid | $ hg -R server serve -p $HGPORT -d --pid-file=hg.pid | ||||
$ cat hg.pid > $DAEMON_PIDS | $ cat hg.pid > $DAEMON_PIDS | ||||
#if stream-legacy | #if stream-legacy | ||||
With v1 of the stream protocol, changeset are always cloned as public. It make | With v1 of the stream protocol, changeset are always cloned as public. It make | ||||
stream v1 unsuitable for non-publishing repository. | stream v1 unsuitable for non-publishing repository. | ||||
$ hg clone --stream http://localhost:$HGPORT phase-no-publish | $ hg clone --stream http://localhost:$HGPORT phase-no-publish | ||||
streaming all changes | streaming all changes | ||||
1027 files to transfer, 96.3 KB of data | 1027 files to transfer, 96.3 KB of data (no-zstd !) | ||||
transferred 96.3 KB in * seconds (*) (glob) | transferred 96.3 KB in * seconds (* */sec) (glob) (no-zstd !) | ||||
1027 files to transfer, 93.5 KB of data (zstd !) | |||||
transferred 93.5 KB in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
updating to branch default | updating to branch default | ||||
1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg -R phase-no-publish phase -r 'all()' | $ hg -R phase-no-publish phase -r 'all()' | ||||
0: public | 0: public | ||||
1: public | 1: public | ||||
#endif | #endif | ||||
#if stream-bundle2 | #if stream-bundle2 | ||||
$ hg clone --stream http://localhost:$HGPORT phase-no-publish | $ hg clone --stream http://localhost:$HGPORT phase-no-publish | ||||
streaming all changes | streaming all changes | ||||
1034 files to transfer, 96.7 KB of data | 1034 files to transfer, 96.7 KB of data (no-zstd !) | ||||
transferred 96.7 KB in * seconds (* */sec) (glob) | transferred 96.7 KB in * seconds (* */sec) (glob) (no-zstd !) | ||||
1034 files to transfer, 93.9 KB of data (zstd !) | |||||
transferred 93.9 KB in * seconds (* */sec) (glob) (zstd !) | |||||
updating to branch default | updating to branch default | ||||
1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1025 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg -R phase-no-publish phase -r 'all()' | $ hg -R phase-no-publish phase -r 'all()' | ||||
0: draft | 0: draft | ||||
1: draft | 1: draft | ||||
#endif | #endif | ||||
$ killdaemons.py | $ killdaemons.py | ||||
1: draft | 1: draft | ||||
0: draft | 0: draft | ||||
$ hg serve -p $HGPORT -d --pid-file=hg.pid | $ hg serve -p $HGPORT -d --pid-file=hg.pid | ||||
$ cat hg.pid > $DAEMON_PIDS | $ cat hg.pid > $DAEMON_PIDS | ||||
$ cd .. | $ cd .. | ||||
$ hg clone -U --stream http://localhost:$HGPORT with-obsolescence | $ hg clone -U --stream http://localhost:$HGPORT with-obsolescence | ||||
streaming all changes | streaming all changes | ||||
1035 files to transfer, 97.1 KB of data | 1035 files to transfer, 97.1 KB of data (no-zstd !) | ||||
transferred 97.1 KB in * seconds (* */sec) (glob) | transferred 97.1 KB in * seconds (* */sec) (glob) (no-zstd !) | ||||
1035 files to transfer, 94.3 KB of data (zstd !) | |||||
transferred 94.3 KB in * seconds (* */sec) (glob) (zstd !) | |||||
$ hg -R with-obsolescence log -T '{rev}: {phase}\n' | $ hg -R with-obsolescence log -T '{rev}: {phase}\n' | ||||
1: draft | 1: draft | ||||
0: draft | 0: draft | ||||
$ hg debugobsolete -R with-obsolescence | $ hg debugobsolete -R with-obsolescence | ||||
50382b884f66690b7045cac93a540cba4d4c906f 0 {c17445101a72edac06facd130d14808dfbd5c7c2} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} | 50382b884f66690b7045cac93a540cba4d4c906f 0 {c17445101a72edac06facd130d14808dfbd5c7c2} (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} | ||||
$ hg clone -U --stream --config experimental.evolution=0 http://localhost:$HGPORT with-obsolescence-no-evolution | $ hg clone -U --stream --config experimental.evolution=0 http://localhost:$HGPORT with-obsolescence-no-evolution | ||||
streaming all changes | streaming all changes | ||||
remote: abort: server has obsolescence markers, but client cannot receive them via stream clone | remote: abort: server has obsolescence markers, but client cannot receive them via stream clone | ||||
abort: pull failed on remote | abort: pull failed on remote | ||||
[255] | [255] | ||||
$ killdaemons.py | $ killdaemons.py | ||||
#endif | #endif |
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: yes yes no | copies-sdc: yes yes no | ||||
revlog-v2: yes yes no | revlog-v2: yes yes no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | |||||
compression-level: default default default | compression-level: default default default | ||||
#else | #else | ||||
$ hg debugformat -v | $ hg debugformat -v | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: yes yes yes | fncache: yes yes yes | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | |||||
compression-level: default default default | compression-level: default default default | ||||
#endif | #endif | ||||
$ echo a > a | $ echo a > a | ||||
$ hg add a | $ hg add a | ||||
$ hg ci -m initial | $ hg ci -m initial | ||||
$ hg cp a b | $ hg cp a b | ||||
$ hg cp a c | $ hg cp a c | ||||
$ hg cp a d | $ hg cp a d | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: yes yes no | copies-sdc: yes yes no | ||||
revlog-v2: yes yes no | revlog-v2: yes yes no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | |||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugsidedata -c -- 0 | $ hg debugsidedata -c -- 0 | ||||
1 sidedata entries | 1 sidedata entries | ||||
entry-0014 size 14 | entry-0014 size 14 | ||||
$ hg debugsidedata -c -- 1 | $ hg debugsidedata -c -- 1 | ||||
1 sidedata entries | 1 sidedata entries | ||||
entry-0014 size 14 | entry-0014 size 14 | ||||
$ hg debugsidedata -m -- 0 | $ hg debugsidedata -m -- 0 | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: yes yes no | revlog-v2: yes yes no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | |||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugsidedata -c -- 0 | $ hg debugsidedata -c -- 0 | ||||
1 sidedata entries | 1 sidedata entries | ||||
entry-0014 size 14 | entry-0014 size 14 | ||||
$ hg debugsidedata -c -- 1 | $ hg debugsidedata -c -- 1 | ||||
1 sidedata entries | 1 sidedata entries | ||||
entry-0014 size 14 | entry-0014 size 14 | ||||
$ hg debugsidedata -m -- 0 | $ hg debugsidedata -m -- 0 | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: yes yes no | copies-sdc: yes yes no | ||||
revlog-v2: yes yes no | revlog-v2: yes yes no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | |||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugsidedata -c -- 0 | $ hg debugsidedata -c -- 0 | ||||
1 sidedata entries | 1 sidedata entries | ||||
entry-0014 size 14 | entry-0014 size 14 | ||||
$ hg debugsidedata -c -- 1 | $ hg debugsidedata -c -- 1 | ||||
1 sidedata entries | 1 sidedata entries | ||||
entry-0014 size 14 | entry-0014 size 14 | ||||
$ hg debugsidedata -m -- 0 | $ hg debugsidedata -m -- 0 | ||||
#endif | #endif | ||||
$ cd .. | $ cd .. |
2 1 | 2 1 | ||||
3 1 | 3 1 | ||||
4 1 | 4 1 | ||||
5 1 | 5 1 | ||||
6 1 | 6 1 | ||||
7 1 | 7 1 | ||||
8 1 | 8 1 | ||||
9 1 | 9 1 | ||||
10 2 | 10 2 (no-zstd !) | ||||
10 1 (zstd !) | |||||
11 1 | 11 1 | ||||
$ hg --config extensions.strip= strip --no-backup -r 1 | $ hg --config extensions.strip= strip --no-backup -r 1 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Test max chain len | Test max chain len | ||||
$ cat >> $HGRCPATH << EOF | $ cat >> $HGRCPATH << EOF | ||||
> [format] | > [format] | ||||
> maxchainlen=4 | > maxchainlen=4 |
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 6 changes to 3 files (+2 heads) | added 4 changesets with 6 changes to 3 files (+2 heads) | ||||
new changesets 0ea3fcf9d01d:bba78d330d9c | new changesets 0ea3fcf9d01d:bba78d330d9c | ||||
updating to branch default | updating to branch default | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg -R repo debugdeltachain -m | $ hg -R repo debugdeltachain -m | ||||
rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio | rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio | ||||
0 1 1 -1 base 104 135 104 0.77037 104 0 0.00000 | 0 1 1 -1 base 104 135 104 0.77037 104 0 0.00000 (no-zstd !) | ||||
1 1 2 0 prev 57 135 161 1.19259 161 0 0.00000 | 1 1 2 0 prev 57 135 161 1.19259 161 0 0.00000 (no-zstd !) | ||||
2 1 3 1 prev 57 135 218 1.61481 218 0 0.00000 | 2 1 3 1 prev 57 135 218 1.61481 218 0 0.00000 (no-zstd !) | ||||
0 1 1 -1 base 107 135 107 0.79259 107 0 0.00000 (zstd !) | |||||
1 1 2 0 prev 57 135 164 1.21481 164 0 0.00000 (zstd !) | |||||
2 1 3 1 prev 57 135 221 1.63704 221 0 0.00000 (zstd !) | |||||
3 2 1 -1 base 104 135 104 0.77037 104 0 0.00000 | 3 2 1 -1 base 104 135 104 0.77037 104 0 0.00000 | ||||
$ hg -R usegd debugdeltachain -m | $ hg -R usegd debugdeltachain -m | ||||
rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio | rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio | ||||
0 1 1 -1 base 104 135 104 0.77037 104 0 0.00000 | 0 1 1 -1 base 104 135 104 0.77037 104 0 0.00000 (no-zstd !) | ||||
1 1 2 0 p1 57 135 161 1.19259 161 0 0.00000 | 1 1 2 0 p1 57 135 161 1.19259 161 0 0.00000 (no-zstd !) | ||||
2 1 3 1 prev 57 135 218 1.61481 218 0 0.00000 | 2 1 3 1 prev 57 135 218 1.61481 218 0 0.00000 (no-zstd !) | ||||
3 1 2 0 p1 57 135 161 1.19259 275 114 0.70807 | 3 1 2 0 p1 57 135 161 1.19259 275 114 0.70807 (no-zstd !) | ||||
0 1 1 -1 base 107 135 107 0.79259 107 0 0.00000 (zstd !) | |||||
1 1 2 0 p1 57 135 164 1.21481 164 0 0.00000 (zstd !) | |||||
2 1 3 1 prev 57 135 221 1.63704 221 0 0.00000 (zstd !) | |||||
3 1 2 0 p1 57 135 164 1.21481 278 114 0.69512 (zstd !) | |||||
$ hg -R full debugdeltachain -m | $ hg -R full debugdeltachain -m | ||||
rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio | rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio | ||||
0 1 1 -1 base 104 135 104 0.77037 104 0 0.00000 | 0 1 1 -1 base 104 135 104 0.77037 104 0 0.00000 (no-zstd !) | ||||
1 1 2 0 p1 57 135 161 1.19259 161 0 0.00000 | 1 1 2 0 p1 57 135 161 1.19259 161 0 0.00000 (no-zstd !) | ||||
2 1 2 0 p1 57 135 161 1.19259 218 57 0.35404 | 2 1 2 0 p1 57 135 161 1.19259 218 57 0.35404 (no-zstd !) | ||||
3 1 2 0 p1 57 135 161 1.19259 275 114 0.70807 | 3 1 2 0 p1 57 135 161 1.19259 275 114 0.70807 (no-zstd !) | ||||
0 1 1 -1 base 107 135 107 0.79259 107 0 0.00000 (zstd !) | |||||
1 1 2 0 p1 57 135 164 1.21481 164 0 0.00000 (zstd !) | |||||
2 1 2 0 p1 57 135 164 1.21481 221 57 0.34756 (zstd !) | |||||
3 1 2 0 p1 57 135 164 1.21481 278 114 0.69512 (zstd !) | |||||
Test revlog.optimize-delta-parent-choice | Test revlog.optimize-delta-parent-choice | ||||
$ hg init --config format.generaldelta=1 aggressive | $ hg init --config format.generaldelta=1 aggressive | ||||
$ cd aggressive | $ cd aggressive | ||||
$ cat << EOF >> .hg/hgrc | $ cat << EOF >> .hg/hgrc | ||||
> [format] | > [format] | ||||
> generaldelta = 1 | > generaldelta = 1 | ||||
> EOF | > EOF | ||||
$ touch a b c d e | $ touch a b c d e | ||||
$ hg commit -Aqm side1 | $ hg commit -Aqm side1 | ||||
$ hg up -q null | $ hg up -q null | ||||
$ touch x y | $ touch x y | ||||
$ hg commit -Aqm side2 | $ hg commit -Aqm side2 | ||||
- Verify non-aggressive merge uses p1 (commit 1) as delta parent | - Verify non-aggressive merge uses p1 (commit 1) as delta parent | ||||
$ hg merge -q 0 | $ hg merge -q 0 | ||||
$ hg commit -q -m merge | $ hg commit -q -m merge | ||||
$ hg debugdeltachain -m | $ hg debugdeltachain -m | ||||
rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio | rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio | ||||
0 1 1 -1 base 59 215 59 0.27442 59 0 0.00000 | 0 1 1 -1 base 59 215 59 0.27442 59 0 0.00000 (no-zstd !) | ||||
1 1 2 0 prev 61 86 120 1.39535 120 0 0.00000 | 1 1 2 0 prev 61 86 120 1.39535 120 0 0.00000 (no-zstd !) | ||||
2 1 2 0 p2 62 301 121 0.40199 182 61 0.50413 | 2 1 2 0 p2 62 301 121 0.40199 182 61 0.50413 (no-zstd !) | ||||
0 1 1 -1 base 68 215 68 0.31628 68 0 0.00000 (zstd !) | |||||
1 1 2 0 prev 70 86 138 1.60465 138 0 0.00000 (zstd !) | |||||
2 1 2 0 p2 68 301 136 0.45183 206 70 0.51471 (zstd !) | |||||
$ hg strip -q -r . --config extensions.strip= | $ hg strip -q -r . --config extensions.strip= | ||||
- Verify aggressive merge uses p2 (commit 0) as delta parent | - Verify aggressive merge uses p2 (commit 0) as delta parent | ||||
$ hg up -q -C 1 | $ hg up -q -C 1 | ||||
$ hg merge -q 0 | $ hg merge -q 0 | ||||
$ hg commit -q -m merge --config storage.revlog.optimize-delta-parent-choice=yes | $ hg commit -q -m merge --config storage.revlog.optimize-delta-parent-choice=yes | ||||
$ hg debugdeltachain -m | $ hg debugdeltachain -m | ||||
rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio | rev chain# chainlen prev delta size rawsize chainsize ratio lindist extradist extraratio | ||||
0 1 1 -1 base 59 215 59 0.27442 59 0 0.00000 | 0 1 1 -1 base 59 215 59 0.27442 59 0 0.00000 (no-zstd !) | ||||
1 1 2 0 prev 61 86 120 1.39535 120 0 0.00000 | 1 1 2 0 prev 61 86 120 1.39535 120 0 0.00000 (no-zstd !) | ||||
2 1 2 0 p2 62 301 121 0.40199 182 61 0.50413 | 2 1 2 0 p2 62 301 121 0.40199 182 61 0.50413 (no-zstd !) | ||||
0 1 1 -1 base 68 215 68 0.31628 68 0 0.00000 (zstd !) | |||||
1 1 2 0 prev 70 86 138 1.60465 138 0 0.00000 (zstd !) | |||||
2 1 2 0 p2 68 301 136 0.45183 206 70 0.51471 (zstd !) | |||||
Test that strip bundle use bundle2 | Test that strip bundle use bundle2 | ||||
$ hg --config extensions.strip= strip . | $ hg --config extensions.strip= strip . | ||||
0 files updated, 0 files merged, 5 files removed, 0 files unresolved | 0 files updated, 0 files merged, 5 files removed, 0 files unresolved | ||||
saved backup bundle to $TESTTMP/aggressive/.hg/strip-backup/1c5d4dc9a8b8-6c68e60c-backup.hg | saved backup bundle to $TESTTMP/aggressive/.hg/strip-backup/1c5d4dc9a8b8-6c68e60c-backup.hg | ||||
$ hg debugbundle .hg/strip-backup/* | $ hg debugbundle .hg/strip-backup/* | ||||
Stream params: {Compression: BZ} | Stream params: {Compression: BZ} | ||||
changegroup -- {nbchanges: 1, version: 02} (mandatory: True) | changegroup -- {nbchanges: 1, version: 02} (mandatory: True) | ||||
41 3 24 40 p1 58 1104 1381 1.25091 1381 0 0.00000 | 41 3 24 40 p1 58 1104 1381 1.25091 1381 0 0.00000 | ||||
42 3 25 41 p1 58 1150 1439 1.25130 1439 0 0.00000 | 42 3 25 41 p1 58 1150 1439 1.25130 1439 0 0.00000 | ||||
43 3 26 42 p1 58 1196 1497 1.25167 1497 0 0.00000 | 43 3 26 42 p1 58 1196 1497 1.25167 1497 0 0.00000 | ||||
44 3 27 43 p1 58 1242 1555 1.25201 1555 0 0.00000 | 44 3 27 43 p1 58 1242 1555 1.25201 1555 0 0.00000 | ||||
45 3 28 44 p1 58 1288 1613 1.25233 1613 0 0.00000 | 45 3 28 44 p1 58 1288 1613 1.25233 1613 0 0.00000 | ||||
46 3 29 45 p1 58 1334 1671 1.25262 1671 0 0.00000 | 46 3 29 45 p1 58 1334 1671 1.25262 1671 0 0.00000 | ||||
47 3 30 46 p1 58 1380 1729 1.25290 1729 0 0.00000 | 47 3 30 46 p1 58 1380 1729 1.25290 1729 0 0.00000 | ||||
48 3 31 47 p1 58 1426 1787 1.25316 1787 0 0.00000 | 48 3 31 47 p1 58 1426 1787 1.25316 1787 0 0.00000 | ||||
49 4 1 -1 base 197 316 197 0.62342 197 0 0.00000 | 49 4 1 -1 base 197 316 197 0.62342 197 0 0.00000 (no-zstd !) | ||||
50 4 2 49 p1 58 362 255 0.70442 255 0 0.00000 | 50 4 2 49 p1 58 362 255 0.70442 255 0 0.00000 (no-zstd !) | ||||
51 4 3 50 prev 356 594 611 1.02862 611 0 0.00000 | 51 4 3 50 prev 356 594 611 1.02862 611 0 0.00000 (no-zstd !) | ||||
52 4 4 51 p1 58 640 669 1.04531 669 0 0.00000 | 52 4 4 51 p1 58 640 669 1.04531 669 0 0.00000 (no-zstd !) | ||||
49 4 1 -1 base 205 316 205 0.64873 205 0 0.00000 (zstd !) | |||||
50 4 2 49 p1 58 362 263 0.72652 263 0 0.00000 (zstd !) | |||||
51 4 3 50 prev 366 594 629 1.05892 629 0 0.00000 (zstd !) | |||||
52 4 4 51 p1 58 640 687 1.07344 687 0 0.00000 (zstd !) | |||||
53 5 1 -1 base 0 0 0 0.00000 0 0 0.00000 | 53 5 1 -1 base 0 0 0 0.00000 0 0 0.00000 | ||||
54 6 1 -1 base 369 640 369 0.57656 369 0 0.00000 | 54 6 1 -1 base 369 640 369 0.57656 369 0 0.00000 (no-zstd !) | ||||
54 6 1 -1 base 375 640 375 0.58594 375 0 0.00000 (zstd !) | |||||
$ hg clone --pull source-repo --config experimental.maxdeltachainspan=2800 relax-chain --config format.generaldelta=yes | $ hg clone --pull source-repo --config experimental.maxdeltachainspan=2800 relax-chain --config format.generaldelta=yes | ||||
requesting all changes | requesting all changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 55 changesets with 53 changes to 53 files (+2 heads) | added 55 changesets with 53 changes to 53 files (+2 heads) | ||||
new changesets 61246295ee1e:c930ac4a5b32 | new changesets 61246295ee1e:c930ac4a5b32 | ||||
updating to branch default | updating to branch default | ||||
41 3 24 40 p1 58 1104 1381 1.25091 1381 0 0.00000 | 41 3 24 40 p1 58 1104 1381 1.25091 1381 0 0.00000 | ||||
42 3 25 41 p1 58 1150 1439 1.25130 1439 0 0.00000 | 42 3 25 41 p1 58 1150 1439 1.25130 1439 0 0.00000 | ||||
43 3 26 42 p1 58 1196 1497 1.25167 1497 0 0.00000 | 43 3 26 42 p1 58 1196 1497 1.25167 1497 0 0.00000 | ||||
44 3 27 43 p1 58 1242 1555 1.25201 1555 0 0.00000 | 44 3 27 43 p1 58 1242 1555 1.25201 1555 0 0.00000 | ||||
45 3 28 44 p1 58 1288 1613 1.25233 1613 0 0.00000 | 45 3 28 44 p1 58 1288 1613 1.25233 1613 0 0.00000 | ||||
46 3 29 45 p1 58 1334 1671 1.25262 1671 0 0.00000 | 46 3 29 45 p1 58 1334 1671 1.25262 1671 0 0.00000 | ||||
47 3 30 46 p1 58 1380 1729 1.25290 1729 0 0.00000 | 47 3 30 46 p1 58 1380 1729 1.25290 1729 0 0.00000 | ||||
48 3 31 47 p1 58 1426 1787 1.25316 1787 0 0.00000 | 48 3 31 47 p1 58 1426 1787 1.25316 1787 0 0.00000 | ||||
49 4 1 -1 base 197 316 197 0.62342 197 0 0.00000 | 49 4 1 -1 base 197 316 197 0.62342 197 0 0.00000 (no-zstd !) | ||||
50 4 2 49 p1 58 362 255 0.70442 255 0 0.00000 | 50 4 2 49 p1 58 362 255 0.70442 255 0 0.00000 (no-zstd !) | ||||
51 2 13 17 p1 58 594 739 1.24411 2781 2042 2.76319 | 51 2 13 17 p1 58 594 739 1.24411 2781 2042 2.76319 (no-zstd !) | ||||
52 5 1 -1 base 369 640 369 0.57656 369 0 0.00000 | 52 5 1 -1 base 369 640 369 0.57656 369 0 0.00000 (no-zstd !) | ||||
49 4 1 -1 base 205 316 205 0.64873 205 0 0.00000 (zstd !) | |||||
50 4 2 49 p1 58 362 263 0.72652 263 0 0.00000 (zstd !) | |||||
51 2 13 17 p1 58 594 739 1.24411 2789 2050 2.77402 (zstd !) | |||||
52 5 1 -1 base 375 640 375 0.58594 375 0 0.00000 (zstd !) | |||||
53 6 1 -1 base 0 0 0 0.00000 0 0 0.00000 | 53 6 1 -1 base 0 0 0 0.00000 0 0 0.00000 | ||||
54 7 1 -1 base 369 640 369 0.57656 369 0 0.00000 | 54 7 1 -1 base 369 640 369 0.57656 369 0 0.00000 (no-zstd !) | ||||
54 7 1 -1 base 375 640 375 0.58594 375 0 0.00000 (zstd !) | |||||
$ hg clone --pull source-repo --config experimental.maxdeltachainspan=0 noconst-chain --config format.usegeneraldelta=yes --config storage.revlog.reuse-external-delta-parent=no | $ hg clone --pull source-repo --config experimental.maxdeltachainspan=0 noconst-chain --config format.usegeneraldelta=yes --config storage.revlog.reuse-external-delta-parent=no | ||||
requesting all changes | requesting all changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 55 changesets with 53 changes to 53 files (+2 heads) | added 55 changesets with 53 changes to 53 files (+2 heads) | ||||
new changesets 61246295ee1e:c930ac4a5b32 | new changesets 61246295ee1e:c930ac4a5b32 | ||||
updating to branch default | updating to branch default | ||||
46 3 29 45 p1 58 1334 1671 1.25262 1671 0 0.00000 | 46 3 29 45 p1 58 1334 1671 1.25262 1671 0 0.00000 | ||||
47 3 30 46 p1 58 1380 1729 1.25290 1729 0 0.00000 | 47 3 30 46 p1 58 1380 1729 1.25290 1729 0 0.00000 | ||||
48 3 31 47 p1 58 1426 1787 1.25316 1787 0 0.00000 | 48 3 31 47 p1 58 1426 1787 1.25316 1787 0 0.00000 | ||||
49 1 7 5 p1 58 316 389 1.23101 2857 2468 6.34447 | 49 1 7 5 p1 58 316 389 1.23101 2857 2468 6.34447 | ||||
50 1 8 49 p1 58 362 447 1.23481 2915 2468 5.52125 | 50 1 8 49 p1 58 362 447 1.23481 2915 2468 5.52125 | ||||
51 2 13 17 p1 58 594 739 1.24411 2642 1903 2.57510 | 51 2 13 17 p1 58 594 739 1.24411 2642 1903 2.57510 | ||||
52 2 14 51 p1 58 640 797 1.24531 2700 1903 2.38770 | 52 2 14 51 p1 58 640 797 1.24531 2700 1903 2.38770 | ||||
53 4 1 -1 base 0 0 0 0.00000 0 0 0.00000 | 53 4 1 -1 base 0 0 0 0.00000 0 0 0.00000 | ||||
54 5 1 -1 base 369 640 369 0.57656 369 0 0.00000 | 54 5 1 -1 base 369 640 369 0.57656 369 0 0.00000 (no-zstd !) | ||||
54 5 1 -1 base 375 640 375 0.58594 375 0 0.00000 (zstd !) |
$ cd .. | $ cd .. | ||||
$ cat hg1.pid hg2.pid >> $DAEMON_PIDS | $ cat hg1.pid hg2.pid >> $DAEMON_PIDS | ||||
clone via stream | clone via stream | ||||
#if no-reposimplestore | #if no-reposimplestore | ||||
$ hg clone --stream http://localhost:$HGPORT/ copy 2>&1 | $ hg clone --stream http://localhost:$HGPORT/ copy 2>&1 | ||||
streaming all changes | streaming all changes | ||||
6 files to transfer, 606 bytes of data | 6 files to transfer, 606 bytes of data (no-zstd !) | ||||
6 files to transfer, 608 bytes of data (zstd !) | |||||
transferred * bytes in * seconds (*/sec) (glob) | transferred * bytes in * seconds (*/sec) (glob) | ||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
updating to branch default | updating to branch default | ||||
4 files updated, 0 files merged, 0 files removed, 0 files unresolved | 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg verify -R copy | $ hg verify -R copy | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
$ hg id http://localhost:$HGPORT2/ | $ hg id http://localhost:$HGPORT2/ | ||||
5fed3813f7f5 | 5fed3813f7f5 | ||||
$ hg id http://user@localhost:$HGPORT2/ | $ hg id http://user@localhost:$HGPORT2/ | ||||
5fed3813f7f5 | 5fed3813f7f5 | ||||
#if no-reposimplestore | #if no-reposimplestore | ||||
$ hg clone http://user:pass@localhost:$HGPORT2/ dest 2>&1 | $ hg clone http://user:pass@localhost:$HGPORT2/ dest 2>&1 | ||||
streaming all changes | streaming all changes | ||||
7 files to transfer, 916 bytes of data | 7 files to transfer, 916 bytes of data (no-zstd !) | ||||
7 files to transfer, 919 bytes of data (zstd !) | |||||
transferred * bytes in * seconds (*/sec) (glob) | transferred * bytes in * seconds (*/sec) (glob) | ||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
updating to branch default | updating to branch default | ||||
5 files updated, 0 files merged, 0 files removed, 0 files unresolved | 5 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
#endif | #endif | ||||
--pull should override server's preferuncompressed | --pull should override server's preferuncompressed |
$ cd .. | $ cd .. | ||||
$ cat hg1.pid hg2.pid >> $DAEMON_PIDS | $ cat hg1.pid hg2.pid >> $DAEMON_PIDS | ||||
clone via stream | clone via stream | ||||
#if no-reposimplestore | #if no-reposimplestore | ||||
$ hg clone --stream http://localhost:$HGPORT/ copy 2>&1 | $ hg clone --stream http://localhost:$HGPORT/ copy 2>&1 | ||||
streaming all changes | streaming all changes | ||||
9 files to transfer, 715 bytes of data | 9 files to transfer, 715 bytes of data (no-zstd !) | ||||
9 files to transfer, 717 bytes of data (zstd !) | |||||
transferred * bytes in * seconds (*/sec) (glob) | transferred * bytes in * seconds (*/sec) (glob) | ||||
updating to branch default | updating to branch default | ||||
4 files updated, 0 files merged, 0 files removed, 0 files unresolved | 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg verify -R copy | $ hg verify -R copy | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files |
$ hg init local | $ hg init local | ||||
$ checknewrepo local | $ checknewrepo local | ||||
store created | store created | ||||
00changelog.i created | 00changelog.i created | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 | ||||
+this | +this | ||||
creating repo with format.usestore=false | creating repo with format.usestore=false | ||||
$ hg --config format.usestore=false init old | $ hg --config format.usestore=false init old | ||||
$ checknewrepo old | $ checknewrepo old | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
sparserevlog | sparserevlog | ||||
creating repo with format.usefncache=false | creating repo with format.usefncache=false | ||||
$ hg --config format.usefncache=false init old2 | $ hg --config format.usefncache=false init old2 | ||||
$ checknewrepo old2 | $ checknewrepo old2 | ||||
store created | store created | ||||
00changelog.i created | 00changelog.i created | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 | ||||
fncache | fncache | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 | ||||
$ hg init local/sub/repo | $ hg init local/sub/repo | ||||
$ checknewrepo local/sub/repo | $ checknewrepo local/sub/repo | ||||
store created | store created | ||||
00changelog.i created | 00changelog.i created | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
sparserevlog | sparserevlog | ||||
store | store | ||||
testonly-simplestore (reposimplestore !) | testonly-simplestore (reposimplestore !) | ||||
clone bookmarks | clone bookmarks | ||||
$ hg -R local bookmark test | $ hg -R local bookmark test |
1276481102f218c981e0324180bafd9f sub/maybelarge.dat | 1276481102f218c981e0324180bafd9f sub/maybelarge.dat | ||||
"lfconvert" adds 'largefiles' to .hg/requires. | "lfconvert" adds 'largefiles' to .hg/requires. | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
largefiles | largefiles | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 |
The requirement is added to the destination repo. | The requirement is added to the destination repo. | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
lfs | lfs | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ hg log -r 'all()' -G -T '{rev} {join(lfs_files, ", ")} ({desc})\n' | $ hg log -r 'all()' -G -T '{rev} {join(lfs_files, ", ")} ({desc})\n' | ||||
o 8 large_by_size.bin (remove large_by_size.bin) | o 8 large_by_size.bin (remove large_by_size.bin) | ||||
| | | | ||||
o 7 large_by_size.bin (large by size) | o 7 large_by_size.bin (large by size) |
adding file changes | adding file changes | ||||
added 40 changesets with 1 changes to 1 files | added 40 changesets with 1 changes to 1 files | ||||
new changesets *:* (glob) | new changesets *:* (glob) | ||||
$ cd narrow | $ cd narrow | ||||
$ cat .hg/requires | grep -v generaldelta | $ cat .hg/requires | grep -v generaldelta | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
narrowhg-experimental | narrowhg-experimental | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 |
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode (tree !) | dotencode (tree !) | ||||
dotencode (flat-fncache !) | dotencode (flat-fncache !) | ||||
fncache (tree !) | fncache (tree !) | ||||
fncache (flat-fncache !) | fncache (flat-fncache !) | ||||
generaldelta | generaldelta | ||||
narrowhg-experimental | narrowhg-experimental | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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/ |
adding file changes | adding file changes | ||||
added 3 changesets with 1 changes to 1 files | added 3 changesets with 1 changes to 1 files | ||||
new changesets *:* (glob) | new changesets *:* (glob) | ||||
$ cd narrow | $ cd narrow | ||||
$ cat .hg/requires | grep -v generaldelta | $ cat .hg/requires | grep -v generaldelta | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
narrowhg-experimental | narrowhg-experimental | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 |
$ test -f .hg/sparse | $ test -f .hg/sparse | ||||
[1] | [1] | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
narrowhg-experimental | narrowhg-experimental | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
sparserevlog | sparserevlog | ||||
store | store | ||||
treemanifest (tree !) | treemanifest (tree !) | ||||
$ hg debugrebuilddirstate | $ hg debugrebuilddirstate |
1 new obsolescence markers | 1 new obsolescence markers | ||||
obsoleted 1 changesets | obsoleted 1 changesets | ||||
$ hg log -r 'hidden()' --template '{rev}:{node|short} {desc}\n' --hidden | $ hg log -r 'hidden()' --template '{rev}:{node|short} {desc}\n' --hidden | ||||
2:245bde4270cd add original_c | 2:245bde4270cd add original_c | ||||
$ hg debugrevlog -cd | $ hg debugrevlog -cd | ||||
# rev p1rev p2rev start end deltastart base p1 p2 rawsize totalsize compression heads chainlen | # rev p1rev p2rev start end deltastart base p1 p2 rawsize totalsize compression heads chainlen | ||||
0 -1 -1 0 59 0 0 0 0 58 58 0 1 0 | 0 -1 -1 0 59 0 0 0 0 58 58 0 1 0 | ||||
1 0 -1 59 118 59 59 0 0 58 116 0 1 0 | 1 0 -1 59 118 59 59 0 0 58 116 0 1 0 | ||||
2 1 -1 118 193 118 118 59 0 76 192 0 1 0 | 2 1 -1 118 193 118 118 59 0 76 192 0 1 0 (no-zstd !) | ||||
3 1 -1 193 260 193 193 59 0 66 258 0 2 0 | 3 1 -1 193 260 193 193 59 0 66 258 0 2 0 (no-zstd !) | ||||
2 1 -1 118 195 118 118 59 0 76 192 0 1 0 (zstd !) | |||||
3 1 -1 195 262 195 195 59 0 66 258 0 2 0 (zstd !) | |||||
$ hg debugobsolete | $ hg debugobsolete | ||||
245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | 245bde4270cd1072a27757984f9cda8ba26f08ca cdbce2fbb16313928851e97e0d85413f3f7eb77f C (Thu Jan 01 00:00:01 1970 -0002) {'user': 'test'} | ||||
(check for version number of the obsstore) | (check for version number of the obsstore) | ||||
$ dd bs=1 count=1 if=.hg/store/obsstore 2>/dev/null | $ dd bs=1 count=1 if=.hg/store/obsstore 2>/dev/null | ||||
\x00 (no-eol) (esc) | \x00 (no-eol) (esc) | ||||
dotencode: yes | dotencode: yes | ||||
generaldelta: yes | generaldelta: yes | ||||
share-safe: no | share-safe: no | ||||
sparserevlog: yes | sparserevlog: yes | ||||
persistent-nodemap: yes | persistent-nodemap: yes | ||||
copies-sdc: no | copies-sdc: no | ||||
revlog-v2: no | revlog-v2: no | ||||
plain-cl-delta: yes | plain-cl-delta: yes | ||||
compression: zlib | compression: zlib (no-zstd !) | ||||
compression: zstd (zstd !) | |||||
compression-level: default | compression-level: default | ||||
$ hg debugbuilddag .+5000 --new-file | $ hg debugbuilddag .+5000 --new-file | ||||
$ hg debugnodemap --metadata | $ hg debugnodemap --metadata | ||||
uid: ???????????????? (glob) | uid: ???????????????? (glob) | ||||
tip-rev: 5000 | tip-rev: 5000 | ||||
tip-node: 6b02b8c7b96654c25e86ba69eda198d7e6ad8b3c | tip-node: 6b02b8c7b96654c25e86ba69eda198d7e6ad8b3c | ||||
data-length: 121088 | data-length: 121088 | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
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 | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | |||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugupgraderepo --run --no-backup | $ hg debugupgraderepo --run --no-backup | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store | preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-zstd !) | ||||
preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, sparserevlog, store (zstd !) | |||||
removed: persistent-nodemap | removed: persistent-nodemap | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
beginning upgrade... | beginning upgrade... | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
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 | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | |||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugupgraderepo --run --no-backup | $ hg debugupgraderepo --run --no-backup | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store | preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-zstd !) | ||||
preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, sparserevlog, store (zstd !) | |||||
added: persistent-nodemap | added: persistent-nodemap | ||||
persistent-nodemap | persistent-nodemap | ||||
Speedup revision lookup by node id. | Speedup revision lookup by node id. | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
data-unused: 0.000% | data-unused: 0.000% | ||||
Running unrelated upgrade | Running unrelated upgrade | ||||
$ hg debugupgraderepo --run --no-backup --quiet --optimize re-delta-all | $ hg debugupgraderepo --run --no-backup --quiet --optimize re-delta-all | ||||
upgrade will perform the following actions: | upgrade will perform the following actions: | ||||
requirements | requirements | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, sparserevlog, store (no-zstd !) | ||||
preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, revlogv1, sparserevlog, store (zstd !) | |||||
optimisations: re-delta-all | optimisations: re-delta-all | ||||
processed revlogs: | processed revlogs: | ||||
- all-filelogs | - all-filelogs | ||||
- changelog | - changelog | ||||
- manifest | - manifest | ||||
stream clone | stream clone | ||||
------------ | ------------ | ||||
The persistent nodemap should exist after a streaming clone | The persistent nodemap should exist after a streaming clone | ||||
$ hg clone -U --stream --config ui.ssh="\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/test-repo stream-clone --debug | egrep '00(changelog|manifest)' | $ hg clone -U --stream --config ui.ssh="\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/test-repo stream-clone --debug | egrep '00(changelog|manifest)' | ||||
adding [s] 00manifest.n (70 bytes) | adding [s] 00manifest.n (70 bytes) | ||||
adding [s] 00manifest.i (313 KB) | adding [s] 00manifest.i (313 KB) | ||||
adding [s] 00manifest.d (452 KB) | adding [s] 00manifest.d (452 KB) (no-zstd !) | ||||
adding [s] 00manifest.d (491 KB) (zstd !) | |||||
adding [s] 00manifest-*.nd (118 KB) (glob) | adding [s] 00manifest-*.nd (118 KB) (glob) | ||||
adding [s] 00changelog.n (70 bytes) | adding [s] 00changelog.n (70 bytes) | ||||
adding [s] 00changelog.i (313 KB) | adding [s] 00changelog.i (313 KB) | ||||
adding [s] 00changelog.d (360 KB) | adding [s] 00changelog.d (360 KB) (no-zstd !) | ||||
adding [s] 00changelog.d (368 KB) (zstd !) | |||||
adding [s] 00changelog-*.nd (118 KB) (glob) | adding [s] 00changelog-*.nd (118 KB) (glob) | ||||
$ ls -1 stream-clone/.hg/store/ | egrep '00(changelog|manifest)(\.n|-.*\.nd)' | $ ls -1 stream-clone/.hg/store/ | egrep '00(changelog|manifest)(\.n|-.*\.nd)' | ||||
00changelog-*.nd (glob) | 00changelog-*.nd (glob) | ||||
00changelog.n | 00changelog.n | ||||
00manifest-*.nd (glob) | 00manifest-*.nd (glob) | ||||
00manifest.n | 00manifest.n | ||||
$ hg -R stream-clone debugnodemap --metadata | $ hg -R stream-clone debugnodemap --metadata | ||||
uid: * (glob) | uid: * (glob) | ||||
tip-rev: 5005 | tip-rev: 5005 | ||||
tip-node: 90d5d3ba2fc47db50f712570487cb261a68c8ffe | tip-node: 90d5d3ba2fc47db50f712570487cb261a68c8ffe | ||||
data-length: 121088 | data-length: 121088 | ||||
data-unused: 0 | data-unused: 0 | ||||
data-unused: 0.000% | data-unused: 0.000% |
Check we deny its usage on older repository | Check we deny its usage on older repository | ||||
$ hg init no-internal-phase --config format.internal-phase=no | $ hg init no-internal-phase --config format.internal-phase=no | ||||
$ cd no-internal-phase | $ cd no-internal-phase | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ echo X > X | $ echo X > X | ||||
$ hg add X | $ hg add X | ||||
$ hg status | $ hg status | ||||
A X | A X | ||||
$ hg --config "phases.new-commit=internal" commit -m "my test internal commit" 2>&1 | grep ProgrammingError | $ hg --config "phases.new-commit=internal" commit -m "my test internal commit" 2>&1 | grep ProgrammingError | ||||
$ hg init internal-phase --config format.internal-phase=yes | $ hg init internal-phase --config format.internal-phase=yes | ||||
$ cd internal-phase | $ cd internal-phase | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
internal-phase | internal-phase | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ mkcommit A | $ mkcommit A | ||||
test-debug-phase: new rev 0: x -> 1 | test-debug-phase: new rev 0: x -> 1 | ||||
test-hook-close-phase: 4a2df7238c3b48766b5e22fafbb8a2f506ec8256: -> draft | test-hook-close-phase: 4a2df7238c3b48766b5e22fafbb8a2f506ec8256: -> draft | ||||
Commit an internal changesets | Commit an internal changesets |
$ hg bookmark foo | $ hg bookmark foo | ||||
$ cd .. | $ cd .. | ||||
# clone the repo | # clone the repo | ||||
$ hgcloneshallow ssh://user@dummy/master shallow --noupdate | $ hgcloneshallow ssh://user@dummy/master shallow --noupdate | ||||
streaming all changes | streaming all changes | ||||
2 files to transfer, 776 bytes of data | 2 files to transfer, 776 bytes of data (no-zstd !) | ||||
transferred 776 bytes in * seconds (*/sec) (glob) | transferred 776 bytes in * seconds (*/sec) (glob) (no-zstd !) | ||||
2 files to transfer, 784 bytes of data (zstd !) | |||||
transferred 784 bytes in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
# Set the prefetchdays config to zero so that all commits are prefetched | # Set the prefetchdays config to zero so that all commits are prefetched | ||||
# no matter what their creation date is. Also set prefetchdelay config | # no matter what their creation date is. Also set prefetchdelay config | ||||
# to zero so that there is no delay between prefetches. | # to zero so that there is no delay between prefetches. | ||||
$ cd shallow | $ cd shallow | ||||
$ cat >> .hg/hgrc <<EOF | $ cat >> .hg/hgrc <<EOF |
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
$ cd shallow | $ cd shallow | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
exp-remotefilelog-repo-req-1 | exp-remotefilelog-repo-req-1 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 | ||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
$ cd shallow2 | $ cd shallow2 | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
exp-remotefilelog-repo-req-1 | exp-remotefilelog-repo-req-1 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
sparserevlog | sparserevlog | ||||
store | store | ||||
treemanifest | treemanifest | ||||
$ ls .hg/store/data | $ ls .hg/store/data | ||||
ca31988f085bfb945cb8115b78fabdee40f741aa | ca31988f085bfb945cb8115b78fabdee40f741aa | ||||
$ 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 | ||||
$ ls shallow3/.hg/store/data | $ ls shallow3/.hg/store/data | ||||
$ cat shallow3/.hg/requires | $ cat shallow3/.hg/requires | ||||
dotencode | dotencode | ||||
exp-remotefilelog-repo-req-1 | exp-remotefilelog-repo-req-1 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
sparserevlog | sparserevlog | ||||
store | store | ||||
treemanifest | treemanifest |
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
$ cd shallow | $ cd shallow | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
exp-remotefilelog-repo-req-1 | exp-remotefilelog-repo-req-1 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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) | ||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
$ cd shallow2 | $ cd shallow2 | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
exp-remotefilelog-repo-req-1 | exp-remotefilelog-repo-req-1 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ ls shallow3/.hg/store/data | $ ls shallow3/.hg/store/data | ||||
$ cat shallow3/.hg/requires | $ cat shallow3/.hg/requires | ||||
dotencode | dotencode | ||||
exp-remotefilelog-repo-req-1 | exp-remotefilelog-repo-req-1 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
sparserevlog | sparserevlog | ||||
store | store |
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
$ cd shallow | $ cd shallow | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
exp-remotefilelog-repo-req-1 | exp-remotefilelog-repo-req-1 | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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) | ||||
$ hg commit -qAm one | $ hg commit -qAm one | ||||
$ cd .. | $ cd .. | ||||
# partial shallow clone | # partial shallow clone | ||||
$ hg clone --shallow ssh://user@dummy/master shallow --noupdate --config remotefilelog.includepattern=foo | $ hg clone --shallow ssh://user@dummy/master shallow --noupdate --config remotefilelog.includepattern=foo | ||||
streaming all changes | streaming all changes | ||||
3 files to transfer, 336 bytes of data | 3 files to transfer, 336 bytes of data (no-zstd !) | ||||
transferred 336 bytes in * seconds (*/sec) (glob) | transferred 336 bytes in * seconds (* */sec) (glob) (no-zstd !) | ||||
3 files to transfer, 338 bytes of data (zstd !) | |||||
transferred 338 bytes in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
$ cat >> shallow/.hg/hgrc <<EOF | $ cat >> shallow/.hg/hgrc <<EOF | ||||
> [remotefilelog] | > [remotefilelog] | ||||
> cachepath=$PWD/hgcache | > cachepath=$PWD/hgcache | ||||
> debug=True | > debug=True | ||||
> includepattern=foo | > includepattern=foo | ||||
> reponame = master | > reponame = master |
$ hg bookmark foo | $ hg bookmark foo | ||||
$ cd .. | $ cd .. | ||||
# prefetch a revision | # prefetch a revision | ||||
$ hgcloneshallow ssh://user@dummy/master shallow --noupdate | $ hgcloneshallow ssh://user@dummy/master shallow --noupdate | ||||
streaming all changes | streaming all changes | ||||
2 files to transfer, 528 bytes of data | 2 files to transfer, 528 bytes of data (no-zstd !) | ||||
transferred 528 bytes in * seconds (*/sec) (glob) | transferred 528 bytes in * seconds (* */sec) (glob) (no-zstd !) | ||||
2 files to transfer, 532 bytes of data (zstd !) | |||||
transferred 532 bytes in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
$ cd shallow | $ cd shallow | ||||
$ hg prefetch -r 0 | $ hg prefetch -r 0 | ||||
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) | ||||
$ hg cat -r 0 x | $ hg cat -r 0 x | ||||
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) | ||||
$ cd .. | $ cd .. | ||||
# Prefetch unknown files during checkout | # Prefetch unknown files during checkout | ||||
$ hgcloneshallow ssh://user@dummy/master shallow2 | $ hgcloneshallow ssh://user@dummy/master shallow2 | ||||
streaming all changes | streaming all changes | ||||
2 files to transfer, 528 bytes of data | 2 files to transfer, 528 bytes of data (no-zstd !) | ||||
transferred 528 bytes in * seconds * (glob) | transferred 528 bytes in * seconds * (glob) (no-zstd !) | ||||
2 files to transfer, 532 bytes of data (zstd !) | |||||
transferred 532 bytes in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
updating to branch default | updating to branch default | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over * (glob) | 1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over * (glob) | ||||
$ cd shallow2 | $ cd shallow2 | ||||
$ hg up -q null | $ hg up -q null | ||||
$ echo x > x | $ echo x > x |
$ hg bookmark foo | $ hg bookmark foo | ||||
$ cd .. | $ cd .. | ||||
# prefetch a revision w/ a sparse checkout | # prefetch a revision w/ a sparse checkout | ||||
$ hgcloneshallow ssh://user@dummy/master shallow --noupdate | $ hgcloneshallow ssh://user@dummy/master shallow --noupdate | ||||
streaming all changes | streaming all changes | ||||
2 files to transfer, 527 bytes of data | 2 files to transfer, 527 bytes of data (no-zstd !) | ||||
transferred 527 bytes in 0.* seconds (*/sec) (glob) | transferred 527 bytes in * seconds (* */sec) (glob) (no-zstd !) | ||||
2 files to transfer, 534 bytes of data (zstd !) | |||||
transferred 534 bytes in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
$ cd shallow | $ cd shallow | ||||
$ printf "[extensions]\nsparse=\n" >> .hg/hgrc | $ printf "[extensions]\nsparse=\n" >> .hg/hgrc | ||||
$ hg debugsparse -I x | $ hg debugsparse -I x | ||||
$ hg prefetch -r 0 | $ hg prefetch -r 0 | ||||
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) | ||||
# Dont consider filtered files when doing copy tracing | # Dont consider filtered files when doing copy tracing | ||||
## Push an unrelated commit | ## Push an unrelated commit | ||||
$ cd ../ | $ cd ../ | ||||
$ hgcloneshallow ssh://user@dummy/master shallow2 | $ hgcloneshallow ssh://user@dummy/master shallow2 | ||||
streaming all changes | streaming all changes | ||||
2 files to transfer, 527 bytes of data | 2 files to transfer, 527 bytes of data (no-zstd !) | ||||
transferred 527 bytes in 0.* seconds (*) (glob) | transferred 527 bytes in * seconds (*) (glob) (no-zstd !) | ||||
2 files to transfer, 534 bytes of data (zstd !) | |||||
transferred 534 bytes in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
updating to branch default | updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 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) | ||||
$ cd shallow2 | $ cd shallow2 | ||||
$ printf "[extensions]\nsparse=\n" >> .hg/hgrc | $ printf "[extensions]\nsparse=\n" >> .hg/hgrc | ||||
$ hg commit -qAm one | $ hg commit -qAm one | ||||
$ hg tag tag1 | $ hg tag tag1 | ||||
$ cd .. | $ cd .. | ||||
# clone with tags | # clone with tags | ||||
$ hg clone --shallow ssh://user@dummy/master shallow --noupdate --config remotefilelog.excludepattern=.hgtags | $ hg clone --shallow ssh://user@dummy/master shallow --noupdate --config remotefilelog.excludepattern=.hgtags | ||||
streaming all changes | streaming all changes | ||||
3 files to transfer, 662 bytes of data | 3 files to transfer, 662 bytes of data (no-zstd !) | ||||
transferred 662 bytes in * seconds (*/sec) (glob) | transferred 662 bytes in * seconds (* */sec) (glob) (no-zstd !) | ||||
3 files to transfer, 665 bytes of data (zstd !) | |||||
transferred 665 bytes in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
$ cat >> shallow/.hg/hgrc <<EOF | $ cat >> shallow/.hg/hgrc <<EOF | ||||
> [remotefilelog] | > [remotefilelog] | ||||
> cachepath=$PWD/hgcache | > cachepath=$PWD/hgcache | ||||
> debug=True | > debug=True | ||||
> reponame = master | > reponame = master | ||||
> excludepattern=.hgtags | > excludepattern=.hgtags |
> # enable extension locally | > # enable extension locally | ||||
> supportlocally = $TESTTMP/supported-locally/supportlocally.py | > supportlocally = $TESTTMP/supported-locally/supportlocally.py | ||||
> EOF | > EOF | ||||
$ hg -R supported debugrequirements | $ hg -R supported debugrequirements | ||||
dotencode | dotencode | ||||
featuresetup-test | featuresetup-test | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 |
> EOF | > EOF | ||||
$ hg init empty-repo | $ hg init empty-repo | ||||
$ cd empty-repo | $ cd empty-repo | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
exp-revlogv2.2 | exp-revlogv2.2 | ||||
fncache | fncache | ||||
revlog-compression-zstd (zstd !) | |||||
sparserevlog | sparserevlog | ||||
store | store | ||||
$ hg log | $ hg log | ||||
Unknown flags to revlog are rejected | Unknown flags to revlog are rejected | ||||
>>> with open('.hg/store/00changelog.i', 'wb') as fh: | >>> with open('.hg/store/00changelog.i', 'wb') as fh: |
unsupported feature: `rhg cat` without `--rev` / `-r` | unsupported feature: `rhg cat` without `--rev` / `-r` | ||||
[252] | [252] | ||||
Requirements | Requirements | ||||
$ $NO_FALLBACK rhg debugrequirements | $ $NO_FALLBACK rhg debugrequirements | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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] |
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | |||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugformat -v -R up-no-side-data --config format.exp-use-side-data=yes | $ hg debugformat -v -R up-no-side-data --config format.exp-use-side-data=yes | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: yes yes yes | fncache: yes yes yes | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no yes no | revlog-v2: no yes no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | |||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugupgraderepo -R up-no-side-data --config format.exp-use-side-data=yes > /dev/null | $ hg debugupgraderepo -R up-no-side-data --config format.exp-use-side-data=yes > /dev/null | ||||
Check that we can downgrade from sidedata | Check that we can downgrade from sidedata | ||||
----------------------------------------- | ----------------------------------------- | ||||
$ hg init up-side-data --config format.exp-use-side-data=yes | $ hg init up-side-data --config format.exp-use-side-data=yes | ||||
$ hg debugformat -v -R up-side-data | $ hg debugformat -v -R up-side-data | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: yes yes yes | fncache: yes yes yes | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: yes no no | revlog-v2: yes no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | |||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugformat -v -R up-side-data --config format.exp-use-side-data=no | $ hg debugformat -v -R up-side-data --config format.exp-use-side-data=no | ||||
format-variant repo config default | format-variant repo config default | ||||
fncache: yes yes yes | fncache: yes yes yes | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: yes no no | revlog-v2: yes no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | |||||
compression-level: default default default | compression-level: default default default | ||||
$ hg debugupgraderepo -R up-side-data --config format.exp-use-side-data=no > /dev/null | $ hg debugupgraderepo -R up-side-data --config format.exp-use-side-data=no > /dev/null |
$ hg commit -m 'commit 1' | $ hg commit -m 'commit 1' | ||||
Enable sparse profile | Enable sparse profile | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
exp-sparse | exp-sparse | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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= | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 |
New repo should not use SQLite by default | New repo should not use SQLite by default | ||||
$ hg init empty-no-sqlite | $ hg init empty-no-sqlite | ||||
$ cat empty-no-sqlite/.hg/requires | $ cat empty-no-sqlite/.hg/requires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 | ||||
$ cat empty-sqlite/.hg/requires | $ cat empty-sqlite/.hg/requires | ||||
dotencode | dotencode | ||||
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 | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 | ||||
$ cat empty-zlib/.hg/requires | $ cat empty-zlib/.hg/requires | ||||
dotencode | dotencode | ||||
exp-sqlite-001 | exp-sqlite-001 | ||||
exp-sqlite-comp-001=$BUNDLE2_COMPRESSIONS$ | exp-sqlite-comp-001=$BUNDLE2_COMPRESSIONS$ | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 | ||||
$ cat empty-none/.hg/requires | $ cat empty-none/.hg/requires | ||||
dotencode | dotencode | ||||
exp-sqlite-001 | exp-sqlite-001 | ||||
exp-sqlite-comp-001=none | exp-sqlite-comp-001=none | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | |||||
revlogv1 | revlogv1 | ||||
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 |
#endif | #endif | ||||
clone remote via stream | clone remote via stream | ||||
#if no-reposimplestore | #if no-reposimplestore | ||||
$ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --stream ssh://user@dummy/remote local-stream | $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --stream ssh://user@dummy/remote local-stream | ||||
streaming all changes | streaming all changes | ||||
4 files to transfer, 602 bytes of data | 4 files to transfer, 602 bytes of data (no-zstd !) | ||||
transferred 602 bytes in * seconds (*) (glob) | transferred 602 bytes in * seconds (*) (glob) (no-zstd !) | ||||
4 files to transfer, 621 bytes of data (zstd !) | |||||
transferred 621 bytes in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
updating to branch default | updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd local-stream | $ cd local-stream | ||||
$ 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 2 changes to 2 files | checked 3 changesets with 2 changes to 2 files | ||||
$ hg branches | $ hg branches | ||||
default 0:1160648e36ce | default 0:1160648e36ce | ||||
$ cd $TESTTMP | $ cd $TESTTMP | ||||
clone bookmarks via stream | clone bookmarks via stream | ||||
$ hg -R local-stream book mybook | $ hg -R local-stream book mybook | ||||
$ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --stream ssh://user@dummy/local-stream stream2 | $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --stream ssh://user@dummy/local-stream stream2 | ||||
streaming all changes | streaming all changes | ||||
4 files to transfer, 602 bytes of data | 4 files to transfer, 602 bytes of data (no-zstd !) | ||||
transferred 602 bytes in * seconds (*) (glob) | transferred 602 bytes in * seconds (*) (glob) (no-zstd !) | ||||
4 files to transfer, 621 bytes of data (zstd !) | |||||
transferred 621 bytes in * seconds (* */sec) (glob) (zstd !) | |||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
updating to branch default | updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd stream2 | $ cd stream2 | ||||
$ hg book | $ hg book | ||||
mybook 0:1160648e36ce | mybook 0:1160648e36ce | ||||
$ cd $TESTTMP | $ cd $TESTTMP |
[255] | [255] | ||||
clone remote via stream | clone remote via stream | ||||
#if no-reposimplestore | #if no-reposimplestore | ||||
$ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --stream ssh://user@dummy/remote local-stream | $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --stream ssh://user@dummy/remote local-stream | ||||
streaming all changes | streaming all changes | ||||
8 files to transfer, 827 bytes of data | 8 files to transfer, 827 bytes of data (no-zstd !) | ||||
transferred 827 bytes in * seconds (*) (glob) | transferred 827 bytes in * seconds (*) (glob) (no-zstd !) | ||||
8 files to transfer, 846 bytes of data (zstd !) | |||||
transferred * bytes in * seconds (* */sec) (glob) (zstd !) | |||||
updating to branch default | updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd local-stream | $ cd local-stream | ||||
$ 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 |
> B | > B | ||||
> | | > | | ||||
> A | > A | ||||
> EOF | > EOF | ||||
$ hg bundle -a --type="none-v2;stream=v2" bundle.hg | $ hg bundle -a --type="none-v2;stream=v2" bundle.hg | ||||
$ hg debugbundle bundle.hg | $ hg debugbundle bundle.hg | ||||
Stream params: {} | Stream params: {} | ||||
stream2 -- {bytecount: 1693, filecount: 11, requirements: dotencode%2Cfncache%2Cgeneraldelta%2Crevlogv1%2Csparserevlog%2Cstore} (mandatory: True) | stream2 -- {bytecount: 1693, filecount: 11, requirements: dotencode%2Cfncache%2Cgeneraldelta%2Crevlogv1%2Csparserevlog%2Cstore} (mandatory: True) (no-zstd !) | ||||
stream2 -- {bytecount: 1693, filecount: 11, requirements: dotencode%2Cfncache%2Cgeneraldelta%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog%2Cstore} (mandatory: True) (zstd !) | |||||
$ hg debugbundle --spec bundle.hg | $ hg debugbundle --spec bundle.hg | ||||
none-v2;stream=v2;requirements%3Ddotencode%2Cfncache%2Cgeneraldelta%2Crevlogv1%2Csparserevlog%2Cstore | none-v2;stream=v2;requirements%3Ddotencode%2Cfncache%2Cgeneraldelta%2Crevlogv1%2Csparserevlog%2Cstore (no-zstd !) | ||||
none-v2;stream=v2;requirements%3Ddotencode%2Cfncache%2Cgeneraldelta%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog%2Cstore (zstd !) | |||||
Test that we can apply the bundle as a stream clone bundle | Test that we can apply the bundle as a stream clone bundle | ||||
$ cat > .hg/clonebundles.manifest << EOF | $ cat > .hg/clonebundles.manifest << EOF | ||||
> http://localhost:$HGPORT1/bundle.hg BUNDLESPEC=`hg debugbundle --spec bundle.hg` | > http://localhost:$HGPORT1/bundle.hg BUNDLESPEC=`hg debugbundle --spec bundle.hg` | ||||
> EOF | > EOF | ||||
$ hg serve -d -p $HGPORT --pid-file hg.pid --accesslog access.log | $ hg serve -d -p $HGPORT --pid-file hg.pid --accesslog access.log |
checking manifests | checking manifests | ||||
checking directory manifests | checking directory manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
checked 4 changesets with 18 changes to 8 files | checked 4 changesets with 18 changes to 8 files | ||||
Packed bundle | Packed bundle | ||||
$ hg -R deeprepo debugcreatestreamclonebundle repo-packed.hg | $ hg -R deeprepo debugcreatestreamclonebundle repo-packed.hg | ||||
writing 5330 bytes for 18 files | writing 5330 bytes for 18 files (no-zstd !) | ||||
writing 5400 bytes for 18 files (zstd !) | |||||
bundle requirements: generaldelta, revlogv1, sparserevlog, treemanifest | bundle requirements: generaldelta, revlogv1, sparserevlog, treemanifest | ||||
$ hg debugbundle --spec repo-packed.hg | $ hg debugbundle --spec repo-packed.hg | ||||
none-packed1;requirements%3Dgeneraldelta%2Crevlogv1%2Csparserevlog%2Ctreemanifest | none-packed1;requirements%3Dgeneraldelta%2Crevlogv1%2Csparserevlog%2Ctreemanifest | ||||
#endif | #endif | ||||
Bundle with changegroup2 is not supported | Bundle with changegroup2 is not supported | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-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 | ||||
dotencode: yes no yes | dotencode: yes no yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-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.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| no][formatvariant.config.default| no][formatvariant.default| no] | ||||
[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] | [formatvariant.name.uptodate|persistent-nodemap:][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|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|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] | [formatvariant.name.uptodate|compression: ][formatvariant.repo.uptodate| zlib][formatvariant.config.default| zlib][formatvariant.default| zlib] (no-zstd !) | ||||
[formatvariant.name.mismatchdefault|compression: ][formatvariant.repo.mismatchdefault| zlib][formatvariant.config.special| zlib][formatvariant.default| zstd] (zstd !) | |||||
[formatvariant.name.uptodate|compression-level: ][formatvariant.repo.uptodate| default][formatvariant.config.default| default][formatvariant.default| default] | [formatvariant.name.uptodate|compression-level: ][formatvariant.repo.uptodate| default][formatvariant.config.default| default][formatvariant.default| default] | ||||
$ hg debugformat -Tjson | $ hg debugformat -Tjson | ||||
[ | [ | ||||
{ | { | ||||
"config": true, | "config": true, | ||||
"default": true, | "default": true, | ||||
"name": "fncache", | "name": "fncache", | ||||
"repo": true | "repo": true | ||||
{ | { | ||||
"config": true, | "config": true, | ||||
"default": true, | "default": true, | ||||
"name": "plain-cl-delta", | "name": "plain-cl-delta", | ||||
"repo": true | "repo": true | ||||
}, | }, | ||||
{ | { | ||||
"config": "zlib", | "config": "zlib", | ||||
"default": "zlib", | "default": "zlib", (no-zstd !) | ||||
"default": "zstd", (zstd !) | |||||
"name": "compression", | "name": "compression", | ||||
"repo": "zlib" | "repo": "zlib" | ||||
}, | }, | ||||
{ | { | ||||
"config": "default", | "config": "default", | ||||
"default": "default", | "default": "default", | ||||
"name": "compression-level", | "name": "compression-level", | ||||
"repo": "default" | "repo": "default" | ||||
dotencode: no yes yes | dotencode: no yes yes | ||||
generaldelta: no yes yes | generaldelta: no yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: no yes yes | sparserevlog: no yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-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 | ||||
dotencode: no yes yes | dotencode: no yes yes | ||||
generaldelta: no no yes | generaldelta: no no yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: no no yes | sparserevlog: no no yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-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.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.uptodate|share-safe: ][formatvariant.repo.uptodate| no][formatvariant.config.default| no][formatvariant.default| no] | ||||
[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] | [formatvariant.name.uptodate|persistent-nodemap:][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|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|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] | [formatvariant.name.uptodate|compression: ][formatvariant.repo.uptodate| zlib][formatvariant.config.default| zlib][formatvariant.default| zlib] (no-zstd !) | ||||
[formatvariant.name.mismatchdefault|compression: ][formatvariant.repo.mismatchdefault| zlib][formatvariant.config.special| zlib][formatvariant.default| zstd] (zstd !) | |||||
[formatvariant.name.uptodate|compression-level: ][formatvariant.repo.uptodate| default][formatvariant.config.default| default][formatvariant.default| default] | [formatvariant.name.uptodate|compression-level: ][formatvariant.repo.uptodate| default][formatvariant.config.default| default][formatvariant.default| default] | ||||
$ hg debugupgraderepo | $ hg debugupgraderepo | ||||
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 | ||||
dotencode | dotencode | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zstd zlib zlib | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zlib zstd (zstd !) | |||||
compression-level: default default default | compression-level: default default default | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd | revlog-compression-zstd | ||||
revlogv1 | revlogv1 | ||||
sparserevlog | sparserevlog | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zlib zlib zlib | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zlib zlib zstd (zstd !) | |||||
compression-level: default default default | compression-level: default default default | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlogv1 | revlogv1 | ||||
sparserevlog | sparserevlog | ||||
store | store | ||||
dotencode: yes yes yes | dotencode: yes yes yes | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-v2: no no no | ||||
plain-cl-delta: yes yes yes | plain-cl-delta: yes yes yes | ||||
compression: zstd zstd zlib | compression: zlib zlib zlib (no-zstd !) | ||||
compression: zstd zstd zstd (zstd !) | |||||
compression-level: default default default | compression-level: default default default | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd | revlog-compression-zstd | ||||
revlogv1 | revlogv1 | ||||
sparserevlog | sparserevlog | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: yes no no | revlog-v2: yes 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 zlib (zstd !) | compression: zstd zstd zstd (zstd !) | ||||
compression-level: default default default | compression-level: default default default | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
exp-revlogv2.2 | exp-revlogv2.2 | ||||
exp-sidedata-flag | exp-sidedata-flag | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: no no no | revlog-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 zlib (zstd !) | compression: zstd zstd zstd (zstd !) | ||||
compression-level: default default default | compression-level: default default default | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
revlogv1 | revlogv1 | ||||
sparserevlog | sparserevlog | ||||
generaldelta: yes yes yes | generaldelta: yes yes yes | ||||
share-safe: no no no | share-safe: no no no | ||||
sparserevlog: yes yes yes | sparserevlog: yes yes yes | ||||
persistent-nodemap: no no no | persistent-nodemap: no no no | ||||
copies-sdc: no no no | copies-sdc: no no no | ||||
revlog-v2: yes yes no | revlog-v2: yes yes 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 zlib (zstd !) | compression: zstd zstd zstd (zstd !) | ||||
compression-level: default default default | compression-level: default default default | ||||
$ cat .hg/requires | $ cat .hg/requires | ||||
dotencode | dotencode | ||||
exp-revlogv2.2 | exp-revlogv2.2 | ||||
exp-sidedata-flag | exp-sidedata-flag | ||||
fncache | fncache | ||||
generaldelta | generaldelta | ||||
revlog-compression-zstd (zstd !) | revlog-compression-zstd (zstd !) | ||||
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 |
> command rawstorefiledata | > command rawstorefiledata | ||||
> files eval:[b'changelog'] | > files eval:[b'changelog'] | ||||
> EOF | > EOF | ||||
creating http peer for wire protocol version 2 | creating http peer for wire protocol version 2 | ||||
sending rawstorefiledata command | sending rawstorefiledata command | ||||
response: gen[ | response: gen[ | ||||
{ | { | ||||
b'filecount': 1, | b'filecount': 1, | ||||
b'totalsize': 527 | b'totalsize': 527 (no-zstd !) | ||||
b'totalsize': 530 (zstd !) | |||||
}, | }, | ||||
{ | { | ||||
b'location': b'store', | b'location': b'store', | ||||
b'path': b'00changelog.i', | b'path': b'00changelog.i', | ||||
b'size': 527 | b'size': 527 (no-zstd !) | ||||
b'size': 530 (zstd !) | |||||
}, | }, | ||||
b'\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00u992f4779029a3df8d0666d00bb924f69634e2641\ntest\n0 0\na\nb\n\ncommit 0\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00>\x00\x00\x00=\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\xff\xff\xff\xffD2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ua988fb43583e871d1ed5750ee074c6d840bbbfc8\ntest\n0 0\na\n\ncommit 1\x00\x00\x00\x00\x00~\x00\x00\x00\x00\x00N\x00\x00\x00W\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\xa4r\xd2\xea\x96U\x1a\x1e\xbb\x011-\xb2\xe6\xa7\x86\xd0F\x96o\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x9c%\xc5\xc1\t\xc0 \x0c\x05\xd0{\xa6p\x03cjI\xd71\xf9\x11<H\xa1u\x7fJ\xf1]\x9eyu\x98\xa2\xb0Z\x88jk0\x11\x95z\xa0\xdb\x11\\\x81S\xfc*\xb4\xe2]\xc4\x89\t\xe3\xe1\xec;\xfc\x95\x1c\xbbN\xe4\xf7\x9cc%\xf9\x00S#\x19\x13\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00C\x00\x00\x00B\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x85kg{\x94a\x12i\xc5lW5[\x85\xf9\x95|\xfc\xc1\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00u90231ddca36fa178a0eed99bd03078112487dda3\ntest\n0 0\ndir1/f\n\ncommit 3', | b'\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00u992f4779029a3df8d0666d00bb924f69634e2641\ntest\n0 0\na\nb\n\ncommit 0\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00>\x00\x00\x00=\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\xff\xff\xff\xffD2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ua988fb43583e871d1ed5750ee074c6d840bbbfc8\ntest\n0 0\na\n\ncommit 1\x00\x00\x00\x00\x00~\x00\x00\x00\x00\x00N\x00\x00\x00W\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\xa4r\xd2\xea\x96U\x1a\x1e\xbb\x011-\xb2\xe6\xa7\x86\xd0F\x96o\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x9c%\xc5\xc1\t\xc0 \x0c\x05\xd0{\xa6p\x03cjI\xd71\xf9\x11<H\xa1u\x7fJ\xf1]\x9eyu\x98\xa2\xb0Z\x88jk0\x11\x95z\xa0\xdb\x11\\\x81S\xfc*\xb4\xe2]\xc4\x89\t\xe3\xe1\xec;\xfc\x95\x1c\xbbN\xe4\xf7\x9cc%\xf9\x00S#\x19\x13\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00C\x00\x00\x00B\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x85kg{\x94a\x12i\xc5lW5[\x85\xf9\x95|\xfc\xc1\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00u90231ddca36fa178a0eed99bd03078112487dda3\ntest\n0 0\ndir1/f\n\ncommit 3', (no-zstd !) | ||||
b'\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00u992f4779029a3df8d0666d00bb924f69634e2641\ntest\n0 0\na\nb\n\ncommit 0\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00>\x00\x00\x00=\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\xff\xff\xff\xffD2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ua988fb43583e871d1ed5750ee074c6d840bbbfc8\ntest\n0 0\na\n\ncommit 1\x00\x00\x00\x00\x00~\x00\x00\x00\x00\x00Q\x00\x00\x00W\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\xa4r\xd2\xea\x96U\x1a\x1e\xbb\x011-\xb2\xe6\xa7\x86\xd0F\x96o\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(\xb5/\xfd WE\x02\x00r\x04\x0f\x14\x90\x01\x0e#\xf7h$;NQC%\xf8f\xd7\xb1\x81\x8d+\x01\x16+)5\xa8\x19\xdaA\xae\xe3\x00\xe9v\xe2l\x05v\x19\x11\xd4\xc1onK\xa2\x17c\xb4\xf3\xe7 z\x13\x8f\x1c\xf3j4\x03\x03\x00`\x06\x84\x8b\x1a\n\x14\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x00\x00C\x00\x00\x00B\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x85kg{\x94a\x12i\xc5lW5[\x85\xf9\x95|\xfc\xc1\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00u90231ddca36fa178a0eed99bd03078112487dda3\ntest\n0 0\ndir1/f\n\ncommit 3', (zstd !) | |||||
b'' | b'' | ||||
] | ] | ||||
Requesting just manifestlog works (as impractical as that operation may be). | Requesting just manifestlog works (as impractical as that operation may be). | ||||
$ sendhttpv2peer << EOF | $ sendhttpv2peer << EOF | ||||
> command rawstorefiledata | > command rawstorefiledata | ||||
> files eval:[b'manifestlog'] | > files eval:[b'manifestlog'] | ||||
> EOF | > EOF | ||||
creating http peer for wire protocol version 2 | creating http peer for wire protocol version 2 | ||||
sending rawstorefiledata command | sending rawstorefiledata command | ||||
response: gen[ | response: gen[ | ||||
{ | { | ||||
b'filecount': 1, | b'filecount': 1, | ||||
b'totalsize': 584 | b'totalsize': 584 (no-zstd !) | ||||
b'totalsize': 588 (zstd !) | |||||
}, | }, | ||||
{ | { | ||||
b'location': b'store', | b'location': b'store', | ||||
b'path': b'00manifest.i', | b'path': b'00manifest.i', | ||||
b'size': 584 | b'size': 584 (no-zstd !) | ||||
b'size': 588 (zstd !) | |||||
}, | }, | ||||
b'\x00\x03\x00\x01\x00\x00\x00\x00\x00\x00\x00I\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x9c\r\xca\xc1\x11\x00!\x08\x040\xdfV\x03+\xa2\x94\xb3\x8c\xd0\x7f\twy\x87\x03i\x95r\x96F6\xe5\x1c\x9a\x10-\x16\xba|\x07\xab\xe5\xd1\xf08s\\\x8d\xc2\xbeo)w\xa9\x8b;\xa2\xff\x95\x19\x02jB\xab\x0c\xea\xf3\x03\xcf\x1d\x16\t\x00\x00\x00\x00\x00I\x00\x00\x00\x00\x007\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\xff\xff\xff\xff\xa9\x88\xfbCX>\x87\x1d\x1e\xd5u\x0e\xe0t\xc6\xd8@\xbb\xbf\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+\x00\x00\x00+a\x009a38122997b3ac97be2a9aa2e556838341fdf2cc\n\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x8c\x00\x00\x01\x16\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\xbcL\xdb}\x10{\xe2w\xaa\xdb"rC\xdf\xb3\xe0M\xd5,\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x9c%\xcd\xb9\rB1\x10\x00Q\xc7\xbf\x19\xf6\xb6\xdd\x08\xb9\xf7\x92H\xa9\x90\xd2\xb8\x82\xc9\x9e4c\x8c\xfb\xf8\xf7\xca\xc7\x13n16\x8a\x88\xb2\xd8\x818`\xb4=eF\xb9f\x17\xcc\x92\x94hR\xc0\xeb\xe7s(/\x02\xcb\xd8\x13K\tU m\t\x1f\xef\xb2D\x03\xa6\xb6\x14\xb2\xaf\xc7[\rw?\x16`\xce\xd0"\x9c,\xddK\xd0c/\rIX4\xc3\xbc\xe4\xef{ u\xcc\x8c\x9c\x93]\x0f\x9cM;\n\xb7\x12-X\x1c\x96\x9fuT\xc8\xf5\x06\x88\xa25W\x00\x00\x00\x00\x01\x0c\x00\x00\x00\x00\x00<\x00\x00\x01\x16\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x90#\x1d\xdc\xa3o\xa1x\xa0\xee\xd9\x9b\xd00x\x11$\x87\xdd\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x01\x16\x00\x00\x000dir1/f\x0028c776ae08d0d55eb40648b401b90ff54448348e\n', | b'\x00\x03\x00\x01\x00\x00\x00\x00\x00\x00\x00I\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x9c\r\xca\xc1\x11\x00!\x08\x040\xdfV\x03+\xa2\x94\xb3\x8c\xd0\x7f\twy\x87\x03i\x95r\x96F6\xe5\x1c\x9a\x10-\x16\xba|\x07\xab\xe5\xd1\xf08s\\\x8d\xc2\xbeo)w\xa9\x8b;\xa2\xff\x95\x19\x02jB\xab\x0c\xea\xf3\x03\xcf\x1d\x16\t\x00\x00\x00\x00\x00I\x00\x00\x00\x00\x007\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\xff\xff\xff\xff\xa9\x88\xfbCX>\x87\x1d\x1e\xd5u\x0e\xe0t\xc6\xd8@\xbb\xbf\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+\x00\x00\x00+a\x009a38122997b3ac97be2a9aa2e556838341fdf2cc\n\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x8c\x00\x00\x01\x16\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\xbcL\xdb}\x10{\xe2w\xaa\xdb"rC\xdf\xb3\xe0M\xd5,\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x9c%\xcd\xb9\rB1\x10\x00Q\xc7\xbf\x19\xf6\xb6\xdd\x08\xb9\xf7\x92H\xa9\x90\xd2\xb8\x82\xc9\x9e4c\x8c\xfb\xf8\xf7\xca\xc7\x13n16\x8a\x88\xb2\xd8\x818`\xb4=eF\xb9f\x17\xcc\x92\x94hR\xc0\xeb\xe7s(/\x02\xcb\xd8\x13K\tU m\t\x1f\xef\xb2D\x03\xa6\xb6\x14\xb2\xaf\xc7[\rw?\x16`\xce\xd0"\x9c,\xddK\xd0c/\rIX4\xc3\xbc\xe4\xef{ u\xcc\x8c\x9c\x93]\x0f\x9cM;\n\xb7\x12-X\x1c\x96\x9fuT\xc8\xf5\x06\x88\xa25W\x00\x00\x00\x00\x01\x0c\x00\x00\x00\x00\x00<\x00\x00\x01\x16\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x90#\x1d\xdc\xa3o\xa1x\xa0\xee\xd9\x9b\xd00x\x11$\x87\xdd\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x01\x16\x00\x00\x000dir1/f\x0028c776ae08d0d55eb40648b401b90ff54448348e\n', (no-zstd !) | ||||
b'\x00\x03\x00\x01\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(\xb5/\xfd V\xfd\x01\x00b\xc5\x0e\x0f\xc0\xd1\x00\xfb\x0c\xb9\xca\xdf\xb2R\xba!\xf2\xf6\x1d\x80\xd5\x95Yc\xef9DaT\xcefcM\xf1\x12\t\x84\xf3\x1a\x04\x04N\\\'S\xf2\'\x8cz5\xc5\x9f\xfa\x18\xf3\x82W\x1a\x83Y\xe8\xf0\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x00\x007\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\xff\xff\xff\xff\xa9\x88\xfbCX>\x87\x1d\x1e\xd5u\x0e\xe0t\xc6\xd8@\xbb\xbf\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+\x00\x00\x00+a\x009a38122997b3ac97be2a9aa2e556838341fdf2cc\n\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x91\x00\x00\x01\x16\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\xbcL\xdb}\x10{\xe2w\xaa\xdb"rC\xdf\xb3\xe0M\xd5,\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(\xb5/\xfd \xccE\x04\x00bK\x1e\x17\xb0A0\xff\xff\x9b\xb5V\x99\x99\xfa\xb6\xae\xf5n),"\xf1\n\x02\xb5\x07\x82++\xd1]T\x1b3\xaa\x8e\x10+)R\xa6\\\x9a\x10\xab+\xb4\x8bB\x9f\x13U\xd4\x98\xbd\xde \x9a\xf4\xd1}[\xfb{,q\x14Kf\x06\x1e\x10\xd6\x17\xbbl\x90\x16\xb9\xb3\xd8\x07\xee\xfc\xa8\x8eI\x10]\x9c\x1ava\x054W\xad\xdf\xb3\x18\xee\xbdd\x15\xdf$\x85St\n\xde\xee?\x91\xa0\x83\x11\x08\xd8\x01\x80\x10B\x04\x00\x04S\x04B\xc7Tw\x9f\xb9,\x00\x00\x00\x00\x01\x10\x00\x00\x00\x00\x00<\x00\x00\x01\x16\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x90#\x1d\xdc\xa3o\xa1x\xa0\xee\xd9\x9b\xd00x\x11$\x87\xdd\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x01\x16\x00\x00\x000dir1/f\x0028c776ae08d0d55eb40648b401b90ff54448348e\n', (zstd !) | |||||
b'' | b'' | ||||
] | ] | ||||
Requesting both changelog and manifestlog works. | Requesting both changelog and manifestlog works. | ||||
$ sendhttpv2peer << EOF | $ sendhttpv2peer << EOF | ||||
> command rawstorefiledata | > command rawstorefiledata | ||||
> files eval:[b'changelog', b'manifestlog'] | > files eval:[b'changelog', b'manifestlog'] | ||||
> EOF | > EOF | ||||
creating http peer for wire protocol version 2 | creating http peer for wire protocol version 2 | ||||
sending rawstorefiledata command | sending rawstorefiledata command | ||||
response: gen[ | response: gen[ | ||||
{ | { | ||||
b'filecount': 2, | b'filecount': 2, | ||||
b'totalsize': 1111 | b'totalsize': 1111 (no-zstd !) | ||||
b'totalsize': 1118 (zstd !) | |||||
}, | }, | ||||
{ | { | ||||
b'location': b'store', | b'location': b'store', | ||||
b'path': b'00manifest.i', | b'path': b'00manifest.i', | ||||
b'size': 584 | b'size': 584 (no-zstd !) | ||||
b'size': 588 (zstd !) | |||||
}, | }, | ||||
b'\x00\x03\x00\x01\x00\x00\x00\x00\x00\x00\x00I\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x9c\r\xca\xc1\x11\x00!\x08\x040\xdfV\x03+\xa2\x94\xb3\x8c\xd0\x7f\twy\x87\x03i\x95r\x96F6\xe5\x1c\x9a\x10-\x16\xba|\x07\xab\xe5\xd1\xf08s\\\x8d\xc2\xbeo)w\xa9\x8b;\xa2\xff\x95\x19\x02jB\xab\x0c\xea\xf3\x03\xcf\x1d\x16\t\x00\x00\x00\x00\x00I\x00\x00\x00\x00\x007\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\xff\xff\xff\xff\xa9\x88\xfbCX>\x87\x1d\x1e\xd5u\x0e\xe0t\xc6\xd8@\xbb\xbf\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+\x00\x00\x00+a\x009a38122997b3ac97be2a9aa2e556838341fdf2cc\n\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x8c\x00\x00\x01\x16\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\xbcL\xdb}\x10{\xe2w\xaa\xdb"rC\xdf\xb3\xe0M\xd5,\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x9c%\xcd\xb9\rB1\x10\x00Q\xc7\xbf\x19\xf6\xb6\xdd\x08\xb9\xf7\x92H\xa9\x90\xd2\xb8\x82\xc9\x9e4c\x8c\xfb\xf8\xf7\xca\xc7\x13n16\x8a\x88\xb2\xd8\x818`\xb4=eF\xb9f\x17\xcc\x92\x94hR\xc0\xeb\xe7s(/\x02\xcb\xd8\x13K\tU m\t\x1f\xef\xb2D\x03\xa6\xb6\x14\xb2\xaf\xc7[\rw?\x16`\xce\xd0"\x9c,\xddK\xd0c/\rIX4\xc3\xbc\xe4\xef{ u\xcc\x8c\x9c\x93]\x0f\x9cM;\n\xb7\x12-X\x1c\x96\x9fuT\xc8\xf5\x06\x88\xa25W\x00\x00\x00\x00\x01\x0c\x00\x00\x00\x00\x00<\x00\x00\x01\x16\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x90#\x1d\xdc\xa3o\xa1x\xa0\xee\xd9\x9b\xd00x\x11$\x87\xdd\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x01\x16\x00\x00\x000dir1/f\x0028c776ae08d0d55eb40648b401b90ff54448348e\n', | b'\x00\x03\x00\x01\x00\x00\x00\x00\x00\x00\x00I\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x9c\r\xca\xc1\x11\x00!\x08\x040\xdfV\x03+\xa2\x94\xb3\x8c\xd0\x7f\twy\x87\x03i\x95r\x96F6\xe5\x1c\x9a\x10-\x16\xba|\x07\xab\xe5\xd1\xf08s\\\x8d\xc2\xbeo)w\xa9\x8b;\xa2\xff\x95\x19\x02jB\xab\x0c\xea\xf3\x03\xcf\x1d\x16\t\x00\x00\x00\x00\x00I\x00\x00\x00\x00\x007\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\xff\xff\xff\xff\xa9\x88\xfbCX>\x87\x1d\x1e\xd5u\x0e\xe0t\xc6\xd8@\xbb\xbf\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+\x00\x00\x00+a\x009a38122997b3ac97be2a9aa2e556838341fdf2cc\n\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x8c\x00\x00\x01\x16\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\xbcL\xdb}\x10{\xe2w\xaa\xdb"rC\xdf\xb3\xe0M\xd5,\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x9c%\xcd\xb9\rB1\x10\x00Q\xc7\xbf\x19\xf6\xb6\xdd\x08\xb9\xf7\x92H\xa9\x90\xd2\xb8\x82\xc9\x9e4c\x8c\xfb\xf8\xf7\xca\xc7\x13n16\x8a\x88\xb2\xd8\x818`\xb4=eF\xb9f\x17\xcc\x92\x94hR\xc0\xeb\xe7s(/\x02\xcb\xd8\x13K\tU m\t\x1f\xef\xb2D\x03\xa6\xb6\x14\xb2\xaf\xc7[\rw?\x16`\xce\xd0"\x9c,\xddK\xd0c/\rIX4\xc3\xbc\xe4\xef{ u\xcc\x8c\x9c\x93]\x0f\x9cM;\n\xb7\x12-X\x1c\x96\x9fuT\xc8\xf5\x06\x88\xa25W\x00\x00\x00\x00\x01\x0c\x00\x00\x00\x00\x00<\x00\x00\x01\x16\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x90#\x1d\xdc\xa3o\xa1x\xa0\xee\xd9\x9b\xd00x\x11$\x87\xdd\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x01\x16\x00\x00\x000dir1/f\x0028c776ae08d0d55eb40648b401b90ff54448348e\n', (no-zstd !) | ||||
b'\x00\x03\x00\x01\x00\x00\x00\x00\x00\x00\x00H\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\x99/Gy\x02\x9a=\xf8\xd0fm\x00\xbb\x92OicN&A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(\xb5/\xfd V\xfd\x01\x00b\xc5\x0e\x0f\xc0\xd1\x00\xfb\x0c\xb9\xca\xdf\xb2R\xba!\xf2\xf6\x1d\x80\xd5\x95Yc\xef9DaT\xcefcM\xf1\x12\t\x84\xf3\x1a\x04\x04N\\\'S\xf2\'\x8cz5\xc5\x9f\xfa\x18\xf3\x82W\x1a\x83Y\xe8\xf0\x00\x00\x00\x00\x00\x00H\x00\x00\x00\x00\x007\x00\x00\x00V\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\xff\xff\xff\xff\xa9\x88\xfbCX>\x87\x1d\x1e\xd5u\x0e\xe0t\xc6\xd8@\xbb\xbf\xc8\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00+\x00\x00\x00+a\x009a38122997b3ac97be2a9aa2e556838341fdf2cc\n\x00\x00\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x91\x00\x00\x01\x16\x00\x00\x00\x01\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\xbcL\xdb}\x10{\xe2w\xaa\xdb"rC\xdf\xb3\xe0M\xd5,\x81\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(\xb5/\xfd \xccE\x04\x00bK\x1e\x17\xb0A0\xff\xff\x9b\xb5V\x99\x99\xfa\xb6\xae\xf5n),"\xf1\n\x02\xb5\x07\x82++\xd1]T\x1b3\xaa\x8e\x10+)R\xa6\\\x9a\x10\xab+\xb4\x8bB\x9f\x13U\xd4\x98\xbd\xde \x9a\xf4\xd1}[\xfb{,q\x14Kf\x06\x1e\x10\xd6\x17\xbbl\x90\x16\xb9\xb3\xd8\x07\xee\xfc\xa8\x8eI\x10]\x9c\x1ava\x054W\xad\xdf\xb3\x18\xee\xbdd\x15\xdf$\x85St\n\xde\xee?\x91\xa0\x83\x11\x08\xd8\x01\x80\x10B\x04\x00\x04S\x04B\xc7Tw\x9f\xb9,\x00\x00\x00\x00\x01\x10\x00\x00\x00\x00\x00<\x00\x00\x01\x16\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x90#\x1d\xdc\xa3o\xa1x\xa0\xee\xd9\x9b\xd00x\x11$\x87\xdd\xa3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe6\x00\x00\x01\x16\x00\x00\x000dir1/f\x0028c776ae08d0d55eb40648b401b90ff54448348e\n', (zstd !) | |||||
b'', | b'', | ||||
{ | { | ||||
b'location': b'store', | b'location': b'store', | ||||
b'path': b'00changelog.i', | b'path': b'00changelog.i', | ||||
b'size': 527 | b'size': 527 (no-zstd !) | ||||
b'size': 530 (zstd !) | |||||
}, | }, | ||||
b'\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00u992f4779029a3df8d0666d00bb924f69634e2641\ntest\n0 0\na\nb\n\ncommit 0\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00>\x00\x00\x00=\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\xff\xff\xff\xffD2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ua988fb43583e871d1ed5750ee074c6d840bbbfc8\ntest\n0 0\na\n\ncommit 1\x00\x00\x00\x00\x00~\x00\x00\x00\x00\x00N\x00\x00\x00W\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\xa4r\xd2\xea\x96U\x1a\x1e\xbb\x011-\xb2\xe6\xa7\x86\xd0F\x96o\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x9c%\xc5\xc1\t\xc0 \x0c\x05\xd0{\xa6p\x03cjI\xd71\xf9\x11<H\xa1u\x7fJ\xf1]\x9eyu\x98\xa2\xb0Z\x88jk0\x11\x95z\xa0\xdb\x11\\\x81S\xfc*\xb4\xe2]\xc4\x89\t\xe3\xe1\xec;\xfc\x95\x1c\xbbN\xe4\xf7\x9cc%\xf9\x00S#\x19\x13\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00C\x00\x00\x00B\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x85kg{\x94a\x12i\xc5lW5[\x85\xf9\x95|\xfc\xc1\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00u90231ddca36fa178a0eed99bd03078112487dda3\ntest\n0 0\ndir1/f\n\ncommit 3', | b'\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00u992f4779029a3df8d0666d00bb924f69634e2641\ntest\n0 0\na\nb\n\ncommit 0\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00>\x00\x00\x00=\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\xff\xff\xff\xffD2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ua988fb43583e871d1ed5750ee074c6d840bbbfc8\ntest\n0 0\na\n\ncommit 1\x00\x00\x00\x00\x00~\x00\x00\x00\x00\x00N\x00\x00\x00W\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\xa4r\xd2\xea\x96U\x1a\x1e\xbb\x011-\xb2\xe6\xa7\x86\xd0F\x96o\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x9c%\xc5\xc1\t\xc0 \x0c\x05\xd0{\xa6p\x03cjI\xd71\xf9\x11<H\xa1u\x7fJ\xf1]\x9eyu\x98\xa2\xb0Z\x88jk0\x11\x95z\xa0\xdb\x11\\\x81S\xfc*\xb4\xe2]\xc4\x89\t\xe3\xe1\xec;\xfc\x95\x1c\xbbN\xe4\xf7\x9cc%\xf9\x00S#\x19\x13\x00\x00\x00\x00\x00\xcc\x00\x00\x00\x00\x00C\x00\x00\x00B\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x85kg{\x94a\x12i\xc5lW5[\x85\xf9\x95|\xfc\xc1\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00u90231ddca36fa178a0eed99bd03078112487dda3\ntest\n0 0\ndir1/f\n\ncommit 3', (no-zstd !) | ||||
b'\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00@\x00\x00\x00?\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff3\x90\xef\x85\x00s\xfb\xc2\xf0\xdf\xff"D4,\x8e\x92)\x01:\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00u992f4779029a3df8d0666d00bb924f69634e2641\ntest\n0 0\na\nb\n\ncommit 0\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00>\x00\x00\x00=\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\xff\xff\xff\xffD2\xd86&\xe8\xa9\x86U\xf0b\xec\x1f*C\xb0\x7f\x7f\xbb\xb0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00ua988fb43583e871d1ed5750ee074c6d840bbbfc8\ntest\n0 0\na\n\ncommit 1\x00\x00\x00\x00\x00~\x00\x00\x00\x00\x00Q\x00\x00\x00W\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\xff\xff\xff\xff\xa4r\xd2\xea\x96U\x1a\x1e\xbb\x011-\xb2\xe6\xa7\x86\xd0F\x96o\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(\xb5/\xfd WE\x02\x00r\x04\x0f\x14\x90\x01\x0e#\xf7h$;NQC%\xf8f\xd7\xb1\x81\x8d+\x01\x16+)5\xa8\x19\xdaA\xae\xe3\x00\xe9v\xe2l\x05v\x19\x11\xd4\xc1onK\xa2\x17c\xb4\xf3\xe7 z\x13\x8f\x1c\xf3j4\x03\x03\x00`\x06\x84\x8b\x1a\n\x14\x00\x00\x00\x00\x00\xcf\x00\x00\x00\x00\x00C\x00\x00\x00B\x00\x00\x00\x03\x00\x00\x00\x03\x00\x00\x00\x02\xff\xff\xff\xff\x85kg{\x94a\x12i\xc5lW5[\x85\xf9\x95|\xfc\xc1\xb9\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00u90231ddca36fa178a0eed99bd03078112487dda3\ntest\n0 0\ndir1/f\n\ncommit 3', (zstd !) | |||||
b'' | b'' | ||||
] | ] | ||||
$ cat error.log | $ cat error.log |
] | ] | ||||
} | } | ||||
updating the branch cache | updating the branch cache | ||||
(sent 5 HTTP requests and * bytes; received * bytes in responses) (glob) | (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob) | ||||
$ cat clone-output | grep "received frame" | $ cat clone-output | grep "received frame" | ||||
received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos) | received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos) | ||||
received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | ||||
received frame(size=1275; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | received frame(size=1275; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) (no-zstd !) | ||||
received frame(size=1283; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) (zstd !) | |||||
received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) | received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) | ||||
received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos) | received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos) | ||||
received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | ||||
received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | ||||
received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) | received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) | ||||
received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation) | received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation) | ||||
received frame(size=2; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation) | received frame(size=2; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation) | ||||
received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos) | received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos) | ||||
] | ] | ||||
} | } | ||||
updating the branch cache | updating the branch cache | ||||
(sent 5 HTTP requests and * bytes; received * bytes in responses) (glob) | (sent 5 HTTP requests and * bytes; received * bytes in responses) (glob) | ||||
$ cat clone-output | grep "received frame" | $ cat clone-output | grep "received frame" | ||||
received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos) | received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos) | ||||
received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | ||||
received frame(size=1275; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | received frame(size=1275; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) (no-zstd !) | ||||
received frame(size=1283; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) (zstd !) | |||||
received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) | received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) | ||||
received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos) | received frame(size=9; request=1; stream=2; streamflags=stream-begin; type=stream-settings; flags=eos) | ||||
received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | received frame(size=11; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | ||||
received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | received frame(size=22; request=1; stream=2; streamflags=encoded; type=command-response; flags=continuation) | ||||
received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) | received frame(size=0; request=1; stream=2; streamflags=; type=command-response; flags=eos) | ||||
received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation) | received frame(size=11; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation) | ||||
received frame(size=2; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation) | received frame(size=2; request=3; stream=2; streamflags=encoded; type=command-response; flags=continuation) | ||||
received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos) | received frame(size=0; request=3; stream=2; streamflags=; type=command-response; flags=eos) |