# HG changeset patch # User Pierre-Yves David # Date 1702330079 -3600 # Node ID dcaa2df1f68830da2ee90f84cffb46edfc2c2a20 # Parent 2e0b2a387502d9759032704c41bf731ce5420ade changelog: never inline changelog The test suite mostly use small repositories, that implies that most changelog in the tests are inlined. As a result, non-inlined changelog are quite poorly tested. Since non-inline changelog are most common case for serious repositories, this lack of testing is a significant problem that results in high profile issue like the one recently fixed by 66417f55ea33 and 849745d7da89. Inlining the changelog does not bring much to the table, the number of total file saved is negligible, and the changelog will be read by most operation anyway. So this changeset is make it so we never inline the changelog, and de-inline the one that are still inlined whenever we touch them. By doing that, we remove the "dual code path" situation for writing new entry to the changelog and move to a "single code path" situation. Having a single code path simplify the code and make sure it is covered by test (if test cover that situation obviously) This impact all tests that care about the number of file and the exchange size, but there is nothing too complicated in them just a lot of churn. The churn is made "worse" by the fact rust will use the persistent nodemap on any changelog now. Which is overall a win as it means testing the persistent nodemap more and having less special cases. In short, having inline changelog is mostly useless and an endless source of pain. We get rid of it. diff -r 2e0b2a387502 -r dcaa2df1f688 mercurial/changelog.py --- a/mercurial/changelog.py Mon Dec 11 11:50:55 2023 +0100 +++ b/mercurial/changelog.py Mon Dec 11 22:27:59 2023 +0100 @@ -308,6 +308,7 @@ persistentnodemap=opener.options.get(b'persistent-nodemap', False), concurrencychecker=concurrencychecker, trypending=trypending, + may_inline=False, ) if self._initempty and (self._format_version == revlog.REVLOGV1): @@ -344,6 +345,11 @@ def delayupdate(self, tr): """delay visibility of index updates to other readers""" assert not self._inner.is_open + assert not self._may_inline + # enforce that older changelog that are still inline are split at the + # first opportunity. + if self._inline: + self._enforceinlinesize(tr) if self._docket is not None: self._v2_delayed = True else: diff -r 2e0b2a387502 -r dcaa2df1f688 mercurial/revlog.py --- a/mercurial/revlog.py Mon Dec 11 11:50:55 2023 +0100 +++ b/mercurial/revlog.py Mon Dec 11 22:27:59 2023 +0100 @@ -1391,194 +1391,6 @@ self._load_inner(chunk_cache) self._concurrencychecker = concurrencychecker - @property - def _generaldelta(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.delta_config.general_delta", b"6.6", stacklevel=2 - ) - return self.delta_config.general_delta - - @property - def _checkambig(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.data_config.checkambig", b"6.6", stacklevel=2 - ) - return self.data_config.check_ambig - - @property - def _mmaplargeindex(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.data_config.mmap_large_index", b"6.6", stacklevel=2 - ) - return self.data_config.mmap_large_index - - @property - def _censorable(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.feature_config.censorable", b"6.6", stacklevel=2 - ) - return self.feature_config.censorable - - @property - def _chunkcachesize(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.data_config.chunk_cache_size", b"6.6", stacklevel=2 - ) - return self.data_config.chunk_cache_size - - @property - def _maxchainlen(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.delta_config.max_chain_len", b"6.6", stacklevel=2 - ) - return self.delta_config.max_chain_len - - @property - def _deltabothparents(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.delta_config.delta_both_parents", b"6.6", stacklevel=2 - ) - return self.delta_config.delta_both_parents - - @property - def _candidate_group_chunk_size(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.delta_config.candidate_group_chunk_size", - b"6.6", - stacklevel=2, - ) - return self.delta_config.candidate_group_chunk_size - - @property - def _debug_delta(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.delta_config.debug_delta", b"6.6", stacklevel=2 - ) - return self.delta_config.debug_delta - - @property - def _compengine(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.feature_config.compression_engine", - b"6.6", - stacklevel=2, - ) - return self.feature_config.compression_engine - - @property - def upperboundcomp(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.delta_config.upper_bound_comp", - b"6.6", - stacklevel=2, - ) - return self.delta_config.upper_bound_comp - - @property - def _compengineopts(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.feature_config.compression_engine_options", - b"6.6", - stacklevel=2, - ) - return self.feature_config.compression_engine_options - - @property - def _maxdeltachainspan(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.delta_config.max_deltachain_span", b"6.6", stacklevel=2 - ) - return self.delta_config.max_deltachain_span - - @property - def _withsparseread(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.data_config.with_sparse_read", b"6.6", stacklevel=2 - ) - return self.data_config.with_sparse_read - - @property - def _sparserevlog(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.delta_config.sparse_revlog", b"6.6", stacklevel=2 - ) - return self.delta_config.sparse_revlog - - @property - def hassidedata(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.feature_config.has_side_data", b"6.6", stacklevel=2 - ) - return self.feature_config.has_side_data - - @property - def _srdensitythreshold(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.data_config.sr_density_threshold", - b"6.6", - stacklevel=2, - ) - return self.data_config.sr_density_threshold - - @property - def _srmingapsize(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.data_config.sr_min_gap_size", b"6.6", stacklevel=2 - ) - return self.data_config.sr_min_gap_size - - @property - def _compute_rank(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.feature_config.compute_rank", b"6.6", stacklevel=2 - ) - return self.feature_config.compute_rank - - @property - def canonical_parent_order(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.feature_config.canonical_parent_order", - b"6.6", - stacklevel=2, - ) - return self.feature_config.canonical_parent_order - - @property - def _lazydelta(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.delta_config.lazy_delta", b"6.6", stacklevel=2 - ) - return self.delta_config.lazy_delta - - @property - def _lazydeltabase(self): - """temporary compatibility proxy""" - util.nouideprecwarn( - b"use revlog.delta_config.lazy_delta_base", b"6.6", stacklevel=2 - ) - return self.delta_config.lazy_delta_base - def _init_opts(self): """process options (from above/config) to setup associated default revlog mode @@ -3026,13 +2838,17 @@ msg = b"inline revlog should not have a docket" raise error.ProgrammingError(msg) + # In the common case, we enforce inline size because the revlog has + # been appened too. And in such case, it must have an initial offset + # recorded in the transaction. troffset = tr.findoffset(self._inner.canonical_index_file) - if troffset is None: + pre_touched = troffset is not None + if not pre_touched and self.target[0] != KIND_CHANGELOG: raise error.RevlogError( _(b"%s not found in the transaction") % self._indexfile ) - if troffset: - tr.addbackup(self._inner.canonical_index_file, for_offset=True) + + tr.addbackup(self._inner.canonical_index_file, for_offset=pre_touched) tr.add(self._datafile, 0) new_index_file_path = None diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-bundle.t --- a/tests/test-bundle.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-bundle.t Mon Dec 11 22:27:59 2023 +0100 @@ -286,13 +286,17 @@ #if reporevlogstore rust $ hg -R test debugcreatestreamclonebundle packed.hg - writing 2665 bytes for 6 files + writing 2665 bytes for 6 files (no-rust !) + writing 2919 bytes for 9 files (rust !) bundle requirements: generaldelta, revlog-compression-zstd, revlogv1, sparserevlog $ f -B 64 --size --sha1 --hexdump packed.hg - packed.hg: size=2865, sha1=353d10311f4befa195d9a1ca4b8e26518115c702 - 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 06 00 00 |HGS1UN..........| - 0010: 00 00 00 00 0a 69 00 3b 67 65 6e 65 72 61 6c 64 |.....i.;generald| + packed.hg: size=2865, sha1=353d10311f4befa195d9a1ca4b8e26518115c702 (no-rust !) + 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 06 00 00 |HGS1UN..........| (no-rust !) + 0010: 00 00 00 00 0a 69 00 3b 67 65 6e 65 72 61 6c 64 |.....i.;generald| (no-rust !) + packed.hg: size=3181, sha1=b202787710a1c109246554be589506cd2916acb7 (rust !) + 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 09 00 00 |HGS1UN..........| (rust !) + 0010: 00 00 00 00 0b 67 00 3b 67 65 6e 65 72 61 6c 64 |.....g.;generald| (rust !) 0020: 65 6c 74 61 2c 72 65 76 6c 6f 67 2d 63 6f 6d 70 |elta,revlog-comp| 0030: 72 65 73 73 69 6f 6e 2d 7a 73 74 64 2c 72 65 76 |ression-zstd,rev| $ hg debugbundle --spec packed.hg @@ -302,12 +306,12 @@ #if reporevlogstore no-rust zstd $ hg -R test debugcreatestreamclonebundle packed.hg - writing 2665 bytes for 6 files + writing 2665 bytes for 7 files bundle requirements: generaldelta, revlog-compression-zstd, revlogv1, sparserevlog $ f -B 64 --size --sha1 --hexdump packed.hg - packed.hg: size=2865, sha1=353d10311f4befa195d9a1ca4b8e26518115c702 - 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 06 00 00 |HGS1UN..........| + packed.hg: size=2882, sha1=6525b07e6bfced4b6c2319cb58c6ff76ca72fa13 + 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 07 00 00 |HGS1UN..........| 0010: 00 00 00 00 0a 69 00 3b 67 65 6e 65 72 61 6c 64 |.....i.;generald| 0020: 65 6c 74 61 2c 72 65 76 6c 6f 67 2d 63 6f 6d 70 |elta,revlog-comp| 0030: 72 65 73 73 69 6f 6e 2d 7a 73 74 64 2c 72 65 76 |ression-zstd,rev| @@ -318,12 +322,12 @@ #if reporevlogstore no-rust no-zstd $ hg -R test debugcreatestreamclonebundle packed.hg - writing 2664 bytes for 6 files + writing 2664 bytes for 7 files bundle requirements: generaldelta, revlogv1, sparserevlog $ f -B 64 --size --sha1 --hexdump packed.hg - packed.hg: size=2840, sha1=12bf3eee3eb8a04c503ce2d29b48f0135c7edff5 - 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 06 00 00 |HGS1UN..........| + packed.hg: size=2857, sha1=3a7353323915b095baa6f2ee0a5aed588f11f5f0 + 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 07 00 00 |HGS1UN..........| 0010: 00 00 00 00 0a 68 00 23 67 65 6e 65 72 61 6c 64 |.....h.#generald| 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/| @@ -346,13 +350,17 @@ #if reporevlogstore rust $ hg -R testnongd debugcreatestreamclonebundle packednongd.hg - writing 301 bytes for 3 files + writing 301 bytes for 3 files (no-rust !) + writing 427 bytes for 6 files (rust !) bundle requirements: revlog-compression-zstd, revlogv1 $ f -B 64 --size --sha1 --hexdump packednongd.hg - packednongd.hg: size=407, sha1=0b8714422b785ba8eb98c916b41ffd5fb994c9b5 - 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 03 00 00 |HGS1UN..........| - 0010: 00 00 00 00 01 2d 00 21 72 65 76 6c 6f 67 2d 63 |.....-.!revlog-c| + packednongd.hg: size=407, sha1=0b8714422b785ba8eb98c916b41ffd5fb994c9b5 (no-rust !) + 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 03 00 00 |HGS1UN..........| (no-rust !) + 0010: 00 00 00 00 01 2d 00 21 72 65 76 6c 6f 67 2d 63 |.....-.!revlog-c| (no-rust !) + packednongd.hg: size=593, sha1=1ad0cbea11b5dd7b0437e54ae20fc5f8df118521 (rust !) + 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 06 00 00 |HGS1UN..........| (rust !) + 0010: 00 00 00 00 01 ab 00 21 72 65 76 6c 6f 67 2d 63 |.......!revlog-c| (rust !) 0020: 6f 6d 70 72 65 73 73 69 6f 6e 2d 7a 73 74 64 2c |ompression-zstd,| 0030: 72 65 76 6c 6f 67 76 31 00 64 61 74 61 2f 66 6f |revlogv1.data/fo| @@ -364,12 +372,12 @@ #if reporevlogstore no-rust zstd $ hg -R testnongd debugcreatestreamclonebundle packednongd.hg - writing 301 bytes for 3 files + writing 301 bytes for 4 files bundle requirements: revlog-compression-zstd, revlogv1 $ f -B 64 --size --sha1 --hexdump packednongd.hg - packednongd.hg: size=407, sha1=0b8714422b785ba8eb98c916b41ffd5fb994c9b5 - 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 03 00 00 |HGS1UN..........| + packednongd.hg: size=423, sha1=4269c89cf64b6a4377be75a3983771c4153362bf + 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 04 00 00 |HGS1UN..........| 0010: 00 00 00 00 01 2d 00 21 72 65 76 6c 6f 67 2d 63 |.....-.!revlog-c| 0020: 6f 6d 70 72 65 73 73 69 6f 6e 2d 7a 73 74 64 2c |ompression-zstd,| 0030: 72 65 76 6c 6f 67 76 31 00 64 61 74 61 2f 66 6f |revlogv1.data/fo| @@ -383,12 +391,12 @@ #if reporevlogstore no-rust no-zstd $ hg -R testnongd debugcreatestreamclonebundle packednongd.hg - writing 301 bytes for 3 files + writing 301 bytes for 4 files bundle requirements: revlogv1 $ f -B 64 --size --sha1 --hexdump packednongd.hg - packednongd.hg: size=383, sha1=1d9c230238edd5d38907100b729ba72b1831fe6f - 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 03 00 00 |HGS1UN..........| + packednongd.hg: size=399, sha1=99bb89decfc6674a3cf2cc87accc8c5332ede7fd + 0000: 48 47 53 31 55 4e 00 00 00 00 00 00 00 04 00 00 |HGS1UN..........| 0010: 00 00 00 00 01 2d 00 09 72 65 76 6c 6f 67 76 31 |.....-..revlogv1| 0020: 00 64 61 74 61 2f 66 6f 6f 2e 69 00 36 34 0a 00 |.data/foo.i.64..| 0030: 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| @@ -416,7 +424,8 @@ $ hg -R testsecret debugcreatestreamclonebundle packedsecret.hg (warning: stream clone bundle will contain secret revisions) - writing 301 bytes for 3 files + writing 301 bytes for 3 files (no-rust !) + writing 427 bytes for 6 files (rust !) bundle requirements: generaldelta, revlog-compression-zstd, revlogv1, sparserevlog #endif @@ -425,7 +434,7 @@ $ hg -R testsecret debugcreatestreamclonebundle packedsecret.hg (warning: stream clone bundle will contain secret revisions) - writing 301 bytes for 3 files + writing 301 bytes for 4 files bundle requirements: generaldelta, revlog-compression-zstd, revlogv1, sparserevlog #endif @@ -434,7 +443,7 @@ $ hg -R testsecret debugcreatestreamclonebundle packedsecret.hg (warning: stream clone bundle will contain secret revisions) - writing 301 bytes for 3 files + writing 301 bytes for 4 files bundle requirements: generaldelta, revlogv1, sparserevlog #endif @@ -479,10 +488,12 @@ > EOF $ hg -R packed debugapplystreamclonebundle packed.hg - 6 files to transfer, 2.60 KB of data + 7 files to transfer, 2.60 KB of data (no-rust !) + 9 files to transfer, 2.85 KB of data (rust !) pretxnopen: 000000000000 pretxnclose: aa35859c02ea - transferred 2.60 KB in * seconds (* */sec) (glob) + transferred 2.60 KB in * seconds (* */sec) (glob) (no-rust !) + transferred 2.85 KB in * seconds (* */sec) (glob) (rust !) txnclose: aa35859c02ea (for safety, confirm visibility of streamclone-ed changes by another diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-bundle2-exchange.t --- a/tests/test-bundle2-exchange.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-bundle2-exchange.t Mon Dec 11 22:27:59 2023 +0100 @@ -1042,6 +1042,8 @@ adding changesets remote: abort: incompatible Mercurial client; bundle2 required remote: (see https://www.mercurial-scm.org/wiki/IncompatibleClient) + transaction abort! + rollback completed abort: stream ended unexpectedly (got 0 bytes, expected 4) [255] diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-clone-stream-revlog-split.t --- a/tests/test-clone-stream-revlog-split.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-clone-stream-revlog-split.t Mon Dec 11 22:27:59 2023 +0100 @@ -102,21 +102,28 @@ bundle2-input-part: "stream2" (params: 3 mandatory) supported (stream-bundle2-v2 !) bundle2-input-part: "stream3-exp" (params: 1 mandatory) supported (stream-bundle2-v3 !) applying stream bundle - 7 files to transfer, 2.11 KB of data (stream-bundle2-v2 !) + 8 files to transfer, 2.11 KB of data (stream-bundle2-v2 no-rust !) + 10 files to transfer, 2.29 KB of data (stream-bundle2-v2 rust !) adding [s] data/some-file.i (1.23 KB) (stream-bundle2-v2 !) 7 entries to transfer (stream-bundle2-v3 !) adding [s] data/some-file.d (1.04 KB) (stream-bundle2-v3 !) adding [s] data/some-file.i (192 bytes) (stream-bundle2-v3 !) adding [s] phaseroots (43 bytes) adding [s] 00manifest.i (348 bytes) - adding [s] 00changelog.i (381 bytes) + adding [s] 00changelog.n (62 bytes) (rust !) + adding [s] 00changelog-88698448.nd (128 bytes) (rust !) + adding [s] 00changelog.d (189 bytes) + adding [s] 00changelog.i (192 bytes) adding [c] branch2-served (94 bytes) adding [c] rbc-names-v1 (7 bytes) adding [c] rbc-revs-v1 (24 bytes) updating the branch cache - transferred 2.11 KB in * seconds (* */sec) (glob) - bundle2-input-part: total payload size 2268 (stream-bundle2-v2 !) - bundle2-input-part: total payload size 2296 (stream-bundle2-v3 !) + transferred 2.11 KB in * seconds (* */sec) (glob) (no-rust !) + transferred 2.29 KB in * seconds (* */sec) (glob) (rust !) + bundle2-input-part: total payload size 2285 (stream-bundle2-v2 no-rust !) + bundle2-input-part: total payload size 2518 (stream-bundle2-v2 rust !) + bundle2-input-part: total payload size 2313 (stream-bundle2-v3 no-rust !) + bundle2-input-part: total payload size 2546 (stream-bundle2-v3 rust !) bundle2-input-part: "listkeys" (params: 1 mandatory) supported bundle2-input-bundle: 2 parts total checking for updated bookmarks diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-clone-stream.t --- a/tests/test-clone-stream.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-clone-stream.t Mon Dec 11 22:27:59 2023 +0100 @@ -6,6 +6,10 @@ $ cat << EOF >> $HGRCPATH > [server] > bundle2.stream = no + > [format] + > # persistent nodemap is too broken with legacy format, + > # however client with nodemap support will have better stream support. + > use-persistent-nodemap=no > EOF #endif #if stream-bundle2-v3 @@ -328,9 +332,9 @@ #if stream-legacy $ hg clone --stream -U http://localhost:$HGPORT clone1 streaming all changes - 1090 files to transfer, 102 KB of data (no-zstd !) + 1091 files to transfer, 102 KB of data (no-zstd !) transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - 1090 files to transfer, 98.8 KB of data (zstd !) + 1091 files to transfer, 98.8 KB of data (zstd !) transferred 98.8 KB in * seconds (* */sec) (glob) (zstd !) searching for changes no changes found @@ -339,10 +343,12 @@ #if stream-bundle2-v2 $ hg clone --stream -U http://localhost:$HGPORT clone1 streaming all changes - 1093 files to transfer, 102 KB of data (no-zstd !) + 1094 files to transfer, 102 KB of data (no-zstd !) transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - 1093 files to transfer, 98.9 KB of data (zstd !) - transferred 98.9 KB in * seconds (* */sec) (glob) (zstd !) + 1094 files to transfer, 98.9 KB of data (zstd no-rust !) + transferred 98.9 KB in * seconds (* */sec) (glob) (zstd no-rust !) + 1096 files to transfer, 99.0 KB of data (zstd rust !) + transferred 99.0 KB in * seconds (* */sec) (glob) (zstd rust !) $ ls -1 clone1/.hg/cache branch2-base @@ -362,7 +368,8 @@ streaming all changes 1093 entries to transfer transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - transferred 98.9 KB in * seconds (* */sec) (glob) (zstd !) + transferred 98.9 KB in * seconds (* */sec) (glob) (zstd no-rust !) + transferred 99.0 KB in * seconds (* */sec) (glob) (zstd rust !) $ ls -1 clone1/.hg/cache branch2-base @@ -387,12 +394,12 @@ #if no-zstd no-rust $ f --size --hex --bytes 256 body - body: size=119123 + body: size=119140 0000: 04 6e 6f 6e 65 48 47 32 30 00 00 00 00 00 00 00 |.noneHG20.......| 0010: 62 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 |b.STREAM2.......| 0020: 06 09 04 0c 26 62 79 74 65 63 6f 75 6e 74 31 30 |....&bytecount10| 0030: 34 31 31 35 66 69 6c 65 63 6f 75 6e 74 31 30 39 |4115filecount109| - 0040: 33 72 65 71 75 69 72 65 6d 65 6e 74 73 67 65 6e |3requirementsgen| + 0040: 34 72 65 71 75 69 72 65 6d 65 6e 74 73 67 65 6e |4requirementsgen| 0050: 65 72 61 6c 64 65 6c 74 61 25 32 43 72 65 76 6c |eraldelta%2Crevl| 0060: 6f 67 76 31 25 32 43 73 70 61 72 73 65 72 65 76 |ogv1%2Csparserev| 0070: 6c 6f 67 00 00 80 00 73 08 42 64 61 74 61 2f 30 |log....s.Bdata/0| @@ -407,14 +414,14 @@ #endif #if zstd no-rust $ f --size --hex --bytes 256 body - body: size=116310 (no-bigendian !) - body: size=116305 (bigendian !) + body: size=116327 (no-bigendian !) + body: size=116322 (bigendian !) 0000: 04 6e 6f 6e 65 48 47 32 30 00 00 00 00 00 00 00 |.noneHG20.......| 0010: 7c 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 ||.STREAM2.......| 0020: 06 09 04 0c 40 62 79 74 65 63 6f 75 6e 74 31 30 |....@bytecount10| 0030: 31 32 37 36 66 69 6c 65 63 6f 75 6e 74 31 30 39 |1276filecount109| (no-bigendian !) 0030: 31 32 37 31 66 69 6c 65 63 6f 75 6e 74 31 30 39 |1271filecount109| (bigendian !) - 0040: 33 72 65 71 75 69 72 65 6d 65 6e 74 73 67 65 6e |3requirementsgen| + 0040: 34 72 65 71 75 69 72 65 6d 65 6e 74 73 67 65 6e |4requirementsgen| 0050: 65 72 61 6c 64 65 6c 74 61 25 32 43 72 65 76 6c |eraldelta%2Crevl| 0060: 6f 67 2d 63 6f 6d 70 72 65 73 73 69 6f 6e 2d 7a |og-compression-z| 0070: 73 74 64 25 32 43 72 65 76 6c 6f 67 76 31 25 32 |std%2Crevlogv1%2| @@ -429,12 +436,22 @@ #endif #if zstd rust no-dirstate-v2 $ f --size --hex --bytes 256 body - body: size=116310 + body: size=116310 (no-rust !) + body: size=116495 (rust no-stream-legacy no-bigendian !) + body: size=116490 (rust no-stream-legacy bigendian !) + body: size=116327 (rust stream-legacy no-bigendian !) + body: size=116322 (rust stream-legacy bigendian !) 0000: 04 6e 6f 6e 65 48 47 32 30 00 00 00 00 00 00 00 |.noneHG20.......| 0010: 7c 07 53 54 52 45 41 4d 32 00 00 00 00 03 00 09 ||.STREAM2.......| 0020: 06 09 04 0c 40 62 79 74 65 63 6f 75 6e 74 31 30 |....@bytecount10| - 0030: 31 32 37 36 66 69 6c 65 63 6f 75 6e 74 31 30 39 |1276filecount109| - 0040: 33 72 65 71 75 69 72 65 6d 65 6e 74 73 67 65 6e |3requirementsgen| + 0030: 31 32 37 36 66 69 6c 65 63 6f 75 6e 74 31 30 39 |1276filecount109| (no-rust !) + 0040: 33 72 65 71 75 69 72 65 6d 65 6e 74 73 67 65 6e |3requirementsgen| (no-rust !) + 0030: 31 34 30 32 66 69 6c 65 63 6f 75 6e 74 31 30 39 |1402filecount109| (rust no-stream-legacy no-bigendian !) + 0030: 31 33 39 37 66 69 6c 65 63 6f 75 6e 74 31 30 39 |1397filecount109| (rust no-stream-legacy bigendian !) + 0040: 36 72 65 71 75 69 72 65 6d 65 6e 74 73 67 65 6e |6requirementsgen| (rust no-stream-legacy !) + 0030: 31 32 37 36 66 69 6c 65 63 6f 75 6e 74 31 30 39 |1276filecount109| (rust stream-legacy no-bigendian !) + 0030: 31 32 37 31 66 69 6c 65 63 6f 75 6e 74 31 30 39 |1271filecount109| (rust stream-legacy bigendian !) + 0040: 34 72 65 71 75 69 72 65 6d 65 6e 74 73 67 65 6e |4requirementsgen| (rust stream-legacy !) 0050: 65 72 61 6c 64 65 6c 74 61 25 32 43 72 65 76 6c |eraldelta%2Crevl| 0060: 6f 67 2d 63 6f 6d 70 72 65 73 73 69 6f 6e 2d 7a |og-compression-z| 0070: 73 74 64 25 32 43 72 65 76 6c 6f 67 76 31 25 32 |std%2Crevlogv1%2| @@ -473,9 +490,9 @@ #if stream-legacy $ hg clone --uncompressed -U http://localhost:$HGPORT clone1-uncompressed streaming all changes - 1090 files to transfer, 102 KB of data (no-zstd !) + 1091 files to transfer, 102 KB of data (no-zstd !) transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - 1090 files to transfer, 98.8 KB of data (zstd !) + 1091 files to transfer, 98.8 KB of data (zstd !) transferred 98.8 KB in * seconds (* */sec) (glob) (zstd !) searching for changes no changes found @@ -483,17 +500,20 @@ #if stream-bundle2-v2 $ hg clone --uncompressed -U http://localhost:$HGPORT clone1-uncompressed streaming all changes - 1093 files to transfer, 102 KB of data (no-zstd !) + 1094 files to transfer, 102 KB of data (no-zstd !) transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - 1093 files to transfer, 98.9 KB of data (zstd !) - transferred 98.9 KB in * seconds (* */sec) (glob) (zstd !) + 1094 files to transfer, 98.9 KB of data (zstd no-rust !) + transferred 98.9 KB in * seconds (* */sec) (glob) (zstd no-rust !) + 1096 files to transfer, 99.0 KB of data (zstd rust !) + transferred 99.0 KB in * seconds (* */sec) (glob) (zstd rust !) #endif #if stream-bundle2-v3 $ hg clone --uncompressed -U http://localhost:$HGPORT clone1-uncompressed streaming all changes 1093 entries to transfer transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - transferred 98.9 KB in * seconds (* */sec) (glob) (zstd !) + transferred 98.9 KB in * seconds (* */sec) (glob) (zstd no-rust !) + transferred 99.0 KB in * seconds (* */sec) (glob) (zstd rust !) #endif Clone with background file closing enabled @@ -505,8 +525,8 @@ sending branchmap command streaming all changes sending stream_out command - 1090 files to transfer, 102 KB of data (no-zstd !) - 1090 files to transfer, 98.8 KB of data (zstd !) + 1091 files to transfer, 102 KB of data (no-zstd !) + 1091 files to transfer, 98.8 KB of data (zstd !) starting 4 threads for background file closing updating the branch cache transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) @@ -537,16 +557,20 @@ bundle2-input-bundle: with-transaction bundle2-input-part: "stream2" (params: 3 mandatory) supported applying stream bundle - 1093 files to transfer, 102 KB of data (no-zstd !) - 1093 files to transfer, 98.9 KB of data (zstd !) + 1094 files to transfer, 102 KB of data (no-zstd !) + 1094 files to transfer, 98.9 KB of data (zstd no-rust !) + 1096 files to transfer, 99.0 KB of data (zstd rust !) starting 4 threads for background file closing starting 4 threads for background file closing updating the branch cache transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - bundle2-input-part: total payload size 118984 (no-zstd !) - transferred 98.9 KB in * seconds (* */sec) (glob) (zstd !) - bundle2-input-part: total payload size 116145 (zstd no-bigendian !) - bundle2-input-part: total payload size 116140 (zstd bigendian !) + bundle2-input-part: total payload size 119001 (no-zstd !) + transferred 98.9 KB in * seconds (* */sec) (glob) (zstd no-rust !) + transferred 99.0 KB in * seconds (* */sec) (glob) (zstd rust !) + bundle2-input-part: total payload size 116162 (zstd no-bigendian no-rust !) + bundle2-input-part: total payload size 116330 (zstd no-bigendian rust !) + bundle2-input-part: total payload size 116157 (zstd bigendian no-rust !) + bundle2-input-part: total payload size 116325 (zstd bigendian rust !) bundle2-input-part: "listkeys" (params: 1 mandatory) supported bundle2-input-bundle: 2 parts total checking for updated bookmarks @@ -569,10 +593,13 @@ starting 4 threads for background file closing updating the branch cache transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - bundle2-input-part: total payload size 120079 (no-zstd !) - transferred 98.9 KB in * seconds (* */sec) (glob) (zstd !) - bundle2-input-part: total payload size 117240 (zstd no-bigendian !) - bundle2-input-part: total payload size 116138 (zstd bigendian !) + bundle2-input-part: total payload size 120096 (no-zstd !) + transferred 98.9 KB in * seconds (* */sec) (glob) (zstd no-rust !) + transferred 99.0 KB in * seconds (* */sec) (glob) (zstd rust !) + bundle2-input-part: total payload size 117257 (zstd no-rust no-bigendian !) + bundle2-input-part: total payload size 117425 (zstd rust no-bigendian !) + bundle2-input-part: total payload size 117252 (zstd bigendian no-rust !) + bundle2-input-part: total payload size 117420 (zstd bigendian rust !) bundle2-input-part: "listkeys" (params: 1 mandatory) supported bundle2-input-bundle: 2 parts total checking for updated bookmarks @@ -604,9 +631,9 @@ #if stream-legacy $ hg clone --stream -U http://localhost:$HGPORT secret-allowed streaming all changes - 1090 files to transfer, 102 KB of data (no-zstd !) + 1091 files to transfer, 102 KB of data (no-zstd !) transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - 1090 files to transfer, 98.8 KB of data (zstd !) + 1091 files to transfer, 98.8 KB of data (zstd !) transferred 98.8 KB in * seconds (* */sec) (glob) (zstd !) searching for changes no changes found @@ -614,17 +641,20 @@ #if stream-bundle2-v2 $ hg clone --stream -U http://localhost:$HGPORT secret-allowed streaming all changes - 1093 files to transfer, 102 KB of data (no-zstd !) + 1094 files to transfer, 102 KB of data (no-zstd !) transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - 1093 files to transfer, 98.9 KB of data (zstd !) - transferred 98.9 KB in * seconds (* */sec) (glob) (zstd !) + 1094 files to transfer, 98.9 KB of data (zstd no-rust !) + transferred 98.9 KB in * seconds (* */sec) (glob) (zstd no-rust !) + 1096 files to transfer, 99.0 KB of data (zstd rust !) + transferred 99.0 KB in * seconds (* */sec) (glob) (zstd rust !) #endif #if stream-bundle2-v3 $ hg clone --stream -U http://localhost:$HGPORT secret-allowed streaming all changes 1093 entries to transfer transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - transferred 98.9 KB in * seconds (* */sec) (glob) (zstd !) + transferred 98.9 KB in * seconds (* */sec) (glob) (zstd no-rust !) + transferred 99.0 KB in * seconds (* */sec) (glob) (zstd rust !) #endif $ killdaemons.py @@ -729,9 +759,9 @@ #if stream-legacy $ hg clone --stream http://localhost:$HGPORT with-bookmarks streaming all changes - 1090 files to transfer, 102 KB of data (no-zstd !) + 1091 files to transfer, 102 KB of data (no-zstd !) transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - 1090 files to transfer, 98.8 KB of data (zstd !) + 1091 files to transfer, 98.8 KB of data (zstd !) transferred 98.8 KB in * seconds (* */sec) (glob) (zstd !) searching for changes no changes found @@ -741,10 +771,12 @@ #if stream-bundle2-v2 $ hg clone --stream http://localhost:$HGPORT with-bookmarks streaming all changes - 1096 files to transfer, 102 KB of data (no-zstd !) + 1097 files to transfer, 102 KB of data (no-zstd !) transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - 1096 files to transfer, 99.1 KB of data (zstd !) - transferred 99.1 KB in * seconds (* */sec) (glob) (zstd !) + 1097 files to transfer, 99.1 KB of data (zstd no-rust !) + transferred 99.1 KB in * seconds (* */sec) (glob) (zstd no-rust !) + 1099 files to transfer, 99.2 KB of data (zstd rust !) + transferred 99.2 KB in * seconds (* */sec) (glob) (zstd rust !) updating to branch default 1088 files updated, 0 files merged, 0 files removed, 0 files unresolved #endif @@ -753,7 +785,8 @@ streaming all changes 1096 entries to transfer transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - transferred 99.1 KB in * seconds (* */sec) (glob) (zstd !) + transferred 99.1 KB in * seconds (* */sec) (glob) (zstd no-rust !) + transferred 99.2 KB in * seconds (* */sec) (glob) (zstd rust !) updating to branch default 1088 files updated, 0 files merged, 0 files removed, 0 files unresolved #endif @@ -774,9 +807,9 @@ #if stream-legacy $ hg clone --stream http://localhost:$HGPORT phase-publish streaming all changes - 1090 files to transfer, 102 KB of data (no-zstd !) + 1091 files to transfer, 102 KB of data (no-zstd !) transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - 1090 files to transfer, 98.8 KB of data (zstd !) + 1091 files to transfer, 98.8 KB of data (zstd !) transferred 98.8 KB in * seconds (* */sec) (glob) (zstd !) searching for changes no changes found @@ -786,10 +819,12 @@ #if stream-bundle2-v2 $ hg clone --stream http://localhost:$HGPORT phase-publish streaming all changes - 1096 files to transfer, 102 KB of data (no-zstd !) + 1097 files to transfer, 102 KB of data (no-zstd !) transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - 1096 files to transfer, 99.1 KB of data (zstd !) - transferred 99.1 KB in * seconds (* */sec) (glob) (zstd !) + 1097 files to transfer, 99.1 KB of data (zstd no-rust !) + transferred 99.1 KB in * seconds (* */sec) (glob) (zstd no-rust !) + 1099 files to transfer, 99.2 KB of data (zstd rust !) + transferred 99.2 KB in * seconds (* */sec) (glob) (zstd rust !) updating to branch default 1088 files updated, 0 files merged, 0 files removed, 0 files unresolved #endif @@ -798,7 +833,8 @@ streaming all changes 1096 entries to transfer transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - transferred 99.1 KB in * seconds (* */sec) (glob) (zstd !) + transferred 99.1 KB in * seconds (* */sec) (glob) (zstd no-rust !) + transferred 99.2 KB in * seconds (* */sec) (glob) (zstd rust !) updating to branch default 1088 files updated, 0 files merged, 0 files removed, 0 files unresolved #endif @@ -825,9 +861,9 @@ $ hg clone --stream http://localhost:$HGPORT phase-no-publish streaming all changes - 1090 files to transfer, 102 KB of data (no-zstd !) + 1091 files to transfer, 102 KB of data (no-zstd !) transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - 1090 files to transfer, 98.8 KB of data (zstd !) + 1091 files to transfer, 98.8 KB of data (zstd !) transferred 98.8 KB in * seconds (* */sec) (glob) (zstd !) searching for changes no changes found @@ -841,10 +877,12 @@ #if stream-bundle2-v2 $ hg clone --stream http://localhost:$HGPORT phase-no-publish streaming all changes - 1097 files to transfer, 102 KB of data (no-zstd !) + 1098 files to transfer, 102 KB of data (no-zstd !) transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - 1097 files to transfer, 99.1 KB of data (zstd !) - transferred 99.1 KB in * seconds (* */sec) (glob) (zstd !) + 1098 files to transfer, 99.1 KB of data (zstd no-rust !) + transferred 99.1 KB in * seconds (* */sec) (glob) (zstd no-rust !) + 1100 files to transfer, 99.2 KB of data (zstd rust !) + transferred 99.2 KB in * seconds (* */sec) (glob) (zstd rust !) updating to branch default 1088 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg -R phase-no-publish phase -r 'all()' @@ -857,7 +895,8 @@ streaming all changes 1097 entries to transfer transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - transferred 99.1 KB in * seconds (* */sec) (glob) (zstd !) + transferred 99.1 KB in * seconds (* */sec) (glob) (zstd no-rust !) + transferred 99.2 KB in * seconds (* */sec) (glob) (zstd rust !) updating to branch default 1088 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg -R phase-no-publish phase -r 'all()' @@ -904,10 +943,12 @@ $ hg clone -U --stream http://localhost:$HGPORT with-obsolescence streaming all changes - 1098 files to transfer, 102 KB of data (no-zstd !) + 1099 files to transfer, 102 KB of data (no-zstd !) transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - 1098 files to transfer, 99.5 KB of data (zstd !) - transferred 99.5 KB in * seconds (* */sec) (glob) (zstd !) + 1099 files to transfer, 99.5 KB of data (zstd no-rust !) + transferred 99.5 KB in * seconds (* */sec) (glob) (zstd no-rust !) + 1101 files to transfer, 99.6 KB of data (zstd rust !) + transferred 99.6 KB in * seconds (* */sec) (glob) (zstd rust !) $ hg -R with-obsolescence log -T '{rev}: {phase}\n' 2: draft 1: draft @@ -956,7 +997,8 @@ streaming all changes 1098 entries to transfer transferred 102 KB in * seconds (* */sec) (glob) (no-zstd !) - transferred 99.5 KB in * seconds (* */sec) (glob) (zstd !) + transferred 99.5 KB in * seconds (* */sec) (glob) (zstd no-rust !) + transferred 99.6 KB in * seconds (* */sec) (glob) (zstd rust !) $ hg -R with-obsolescence log -T '{rev}: {phase}\n' 2: draft 1: draft diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-clone.t --- a/tests/test-clone.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-clone.t Mon Dec 11 22:27:59 2023 +0100 @@ -71,22 +71,42 @@ #if hardlink $ hg --debug clone -U . ../c --config progress.debug=true - linking: 1/15 files (6.67%) - linking: 2/15 files (13.33%) - linking: 3/15 files (20.00%) - linking: 4/15 files (26.67%) - linking: 5/15 files (33.33%) - linking: 6/15 files (40.00%) - linking: 7/15 files (46.67%) - linking: 8/15 files (53.33%) - linking: 9/15 files (60.00%) - linking: 10/15 files (66.67%) - linking: 11/15 files (73.33%) - linking: 12/15 files (80.00%) - linking: 13/15 files (86.67%) - linking: 14/15 files (93.33%) - linking: 15/15 files (100.00%) - linked 15 files + linking: 1/16 files (6.25%) (no-rust !) + linking: 2/16 files (12.50%) (no-rust !) + linking: 3/16 files (18.75%) (no-rust !) + linking: 4/16 files (25.00%) (no-rust !) + linking: 5/16 files (31.25%) (no-rust !) + linking: 6/16 files (37.50%) (no-rust !) + linking: 7/16 files (43.75%) (no-rust !) + linking: 8/16 files (50.00%) (no-rust !) + linking: 9/16 files (56.25%) (no-rust !) + linking: 10/16 files (62.50%) (no-rust !) + linking: 11/16 files (68.75%) (no-rust !) + linking: 12/16 files (75.00%) (no-rust !) + linking: 13/16 files (81.25%) (no-rust !) + linking: 14/16 files (87.50%) (no-rust !) + linking: 15/16 files (93.75%) (no-rust !) + linking: 16/16 files (100.00%) (no-rust !) + linked 16 files (no-rust !) + linking: 1/18 files (5.56%) (rust !) + linking: 2/18 files (11.11%) (rust !) + linking: 3/18 files (16.67%) (rust !) + linking: 4/18 files (22.22%) (rust !) + linking: 5/18 files (27.78%) (rust !) + linking: 6/18 files (33.33%) (rust !) + linking: 7/18 files (38.89%) (rust !) + linking: 8/18 files (44.44%) (rust !) + linking: 9/18 files (50.00%) (rust !) + linking: 10/18 files (55.56%) (rust !) + linking: 11/18 files (61.11%) (rust !) + linking: 12/18 files (66.67%) (rust !) + linking: 13/18 files (72.22%) (rust !) + linking: 14/18 files (77.78%) (rust !) + linking: 15/18 files (83.33%) (rust !) + linking: 16/18 files (88.89%) (rust !) + linking: 17/18 files (94.44%) (rust !) + linking: 18/18 files (100.00%) (rust !) + linked 18 files (rust !) updating the branch cache #else $ hg --debug clone -U . ../c --config progress.debug=true diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-clonebundles.t --- a/tests/test-clonebundles.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-clonebundles.t Mon Dec 11 22:27:59 2023 +0100 @@ -379,7 +379,8 @@ Stream clone bundles are supported $ hg -R server debugcreatestreamclonebundle packed.hg - writing 613 bytes for 4 files + writing 613 bytes for 5 files (no-rust !) + writing 739 bytes for 7 files (rust !) bundle requirements: generaldelta, revlogv1, sparserevlog (no-rust no-zstd !) bundle requirements: generaldelta, revlog-compression-zstd, revlogv1, sparserevlog (no-rust zstd !) bundle requirements: generaldelta, revlog-compression-zstd, revlogv1, sparserevlog (rust !) @@ -392,8 +393,10 @@ $ hg clone -U http://localhost:$HGPORT stream-clone-no-spec applying clone bundle from http://localhost:$HGPORT1/packed.hg - 4 files to transfer, 613 bytes of data - transferred 613 bytes in *.* seconds (*) (glob) + 5 files to transfer, 613 bytes of data (no-rust !) + transferred 613 bytes in *.* seconds (*) (glob) (no-rust !) + 7 files to transfer, 739 bytes of data (rust !) + transferred 739 bytes in *.* seconds (*) (glob) (rust !) finished applying clone bundle searching for changes no changes found @@ -406,8 +409,10 @@ $ hg clone -U http://localhost:$HGPORT stream-clone-vanilla-spec applying clone bundle from http://localhost:$HGPORT1/packed.hg - 4 files to transfer, 613 bytes of data - transferred 613 bytes in *.* seconds (*) (glob) + 5 files to transfer, 613 bytes of data (no-rust !) + transferred 613 bytes in *.* seconds (*) (glob) (no-rust !) + 7 files to transfer, 739 bytes of data (rust !) + transferred 739 bytes in *.* seconds (*) (glob) (rust !) finished applying clone bundle searching for changes no changes found @@ -420,8 +425,10 @@ $ hg clone -U http://localhost:$HGPORT stream-clone-supported-requirements applying clone bundle from http://localhost:$HGPORT1/packed.hg - 4 files to transfer, 613 bytes of data - transferred 613 bytes in *.* seconds (*) (glob) + 5 files to transfer, 613 bytes of data (no-rust !) + transferred 613 bytes in *.* seconds (*) (glob) (no-rust !) + 7 files to transfer, 739 bytes of data (rust !) + transferred 739 bytes in *.* seconds (*) (glob) (rust !) finished applying clone bundle searching for changes no changes found @@ -567,8 +574,10 @@ no compatible clone bundles available on server; falling back to regular clone (you may want to report this to the server operator) streaming all changes - 9 files to transfer, 816 bytes of data - transferred 816 bytes in * seconds (*) (glob) + 10 files to transfer, 816 bytes of data (no-rust !) + transferred 816 bytes in * seconds (*) (glob) (no-rust !) + 12 files to transfer, 942 bytes of data (rust !) + transferred 942 bytes in *.* seconds (*) (glob) (rust !) A manifest with a stream clone but no BUNDLESPEC @@ -580,8 +589,10 @@ no compatible clone bundles available on server; falling back to regular clone (you may want to report this to the server operator) streaming all changes - 9 files to transfer, 816 bytes of data - transferred 816 bytes in * seconds (*) (glob) + 10 files to transfer, 816 bytes of data (no-rust !) + transferred 816 bytes in * seconds (*) (glob) (no-rust !) + 12 files to transfer, 942 bytes of data (rust !) + transferred 942 bytes in *.* seconds (*) (glob) (rust !) A manifest with a gzip bundle and a stream clone @@ -592,8 +603,10 @@ $ hg clone -U --stream http://localhost:$HGPORT uncompressed-gzip-packed applying clone bundle from http://localhost:$HGPORT1/packed.hg - 4 files to transfer, 613 bytes of data - transferred 613 bytes in * seconds (*) (glob) + 5 files to transfer, 613 bytes of data (no-rust !) + transferred 613 bytes in *.* seconds (*) (glob) (no-rust !) + 7 files to transfer, 739 bytes of data (rust !) + transferred 739 bytes in *.* seconds (*) (glob) (rust !) finished applying clone bundle searching for changes no changes found @@ -607,8 +620,10 @@ $ hg clone -U --stream http://localhost:$HGPORT uncompressed-gzip-packed-requirements applying clone bundle from http://localhost:$HGPORT1/packed.hg - 4 files to transfer, 613 bytes of data - transferred 613 bytes in * seconds (*) (glob) + 5 files to transfer, 613 bytes of data (no-rust !) + transferred 613 bytes in *.* seconds (*) (glob) (no-rust !) + 7 files to transfer, 739 bytes of data (rust !) + transferred 739 bytes in *.* seconds (*) (glob) (rust !) finished applying clone bundle searching for changes no changes found @@ -624,8 +639,10 @@ no compatible clone bundles available on server; falling back to regular clone (you may want to report this to the server operator) streaming all changes - 9 files to transfer, 816 bytes of data - transferred 816 bytes in * seconds (*) (glob) + 10 files to transfer, 816 bytes of data (no-rust !) + transferred 816 bytes in * seconds (*) (glob) (no-rust !) + 12 files to transfer, 942 bytes of data (rust !) + transferred 942 bytes in *.* seconds (*) (glob) (rust !) Test clone bundle retrieved through bundle2 diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-debug-rebuild-dirstate.t --- a/tests/test-debug-rebuild-dirstate.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-debug-rebuild-dirstate.t Mon Dec 11 22:27:59 2023 +0100 @@ -28,12 +28,12 @@ $ f --size .hg/dirstate* .hg/dirstate: size=133 - .hg/dirstate.b870a51b: size=511 - $ hg debugrebuilddirstate - $ f --size .hg/dirstate* - .hg/dirstate: size=133 .hg/dirstate.88698448: size=511 $ hg debugrebuilddirstate $ f --size .hg/dirstate* .hg/dirstate: size=133 .hg/dirstate.6b8ab34b: size=511 + $ hg debugrebuilddirstate + $ f --size .hg/dirstate* + .hg/dirstate: size=133 + .hg/dirstate.b875dfc5: size=511 diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-debugcommands.t --- a/tests/test-debugcommands.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-debugcommands.t Mon Dec 11 22:27:59 2023 +0100 @@ -17,7 +17,7 @@ #if reporevlogstore $ hg debugrevlog -c format : 1 - flags : inline + flags : (none) revisions : 3 merges : 0 ( 0.00%) diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-eol-clone.t --- a/tests/test-eol-clone.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-eol-clone.t Mon Dec 11 22:27:59 2023 +0100 @@ -80,7 +80,8 @@ [patterns] **.txt = native $ hg clone repo repo-3 -v --debug - linked 7 files + linked 8 files (no-rust !) + linked 10 files (rust !) updating to branch default resolving manifests branchmerge: False, force: False, partial: False diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-fncache.t --- a/tests/test-fncache.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-fncache.t Mon Dec 11 22:27:59 2023 +0100 @@ -88,7 +88,10 @@ adding tst.d/foo $ find .hg | sort .hg + .hg/00changelog-6b8ab34b.nd (rust !) + .hg/00changelog.d .hg/00changelog.i + .hg/00changelog.n (rust !) .hg/00manifest.i .hg/branch .hg/cache @@ -135,7 +138,10 @@ .hg/last-message.txt .hg/requires .hg/store + .hg/store/00changelog-b875dfc5.nd (rust !) + .hg/store/00changelog.d .hg/store/00changelog.i + .hg/store/00changelog.n (rust !) .hg/store/00manifest.i .hg/store/data .hg/store/data/tst.d.hg diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-hardlinks.t --- a/tests/test-hardlinks.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-hardlinks.t Mon Dec 11 22:27:59 2023 +0100 @@ -44,7 +44,10 @@ $ cd ../.. $ nlinksdir r1/.hg/store + 1 r1/.hg/store/00changelog-b870a51b.nd (rust !) + 1 r1/.hg/store/00changelog.d 1 r1/.hg/store/00changelog.i + 1 r1/.hg/store/00changelog.n (rust !) 1 r1/.hg/store/00manifest.i 1 r1/.hg/store/data/d1/f2.i 1 r1/.hg/store/data/f1.i @@ -52,6 +55,7 @@ 1 r1/.hg/store/phaseroots 1 r1/.hg/store/requires 1 r1/.hg/store/undo + 1 r1/.hg/store/undo.backup.00changelog.n.bck (rust !) 1 r1/.hg/store/undo.backup.fncache.bck (repofncache !) 1 r1/.hg/store/undo.backupfiles @@ -59,14 +63,26 @@ Create hardlinked clone r2: $ hg clone -U --debug r1 r2 --config progress.debug=true - linking: 1/7 files (14.29%) - linking: 2/7 files (28.57%) - linking: 3/7 files (42.86%) - linking: 4/7 files (57.14%) - linking: 5/7 files (71.43%) - linking: 6/7 files (85.71%) - linking: 7/7 files (100.00%) - linked 7 files + linking: 1/8 files (12.50%) (no-rust !) + linking: 2/8 files (25.00%) (no-rust !) + linking: 3/8 files (37.50%) (no-rust !) + linking: 4/8 files (50.00%) (no-rust !) + linking: 5/8 files (62.50%) (no-rust !) + linking: 6/8 files (75.00%) (no-rust !) + linking: 7/8 files (87.50%) (no-rust !) + linking: 8/8 files (100.00%) (no-rust !) + linked 8 files (no-rust !) + linking: 1/10 files (10.00%) (rust !) + linking: 2/10 files (20.00%) (rust !) + linking: 3/10 files (30.00%) (rust !) + linking: 4/10 files (40.00%) (rust !) + linking: 5/10 files (50.00%) (rust !) + linking: 6/10 files (60.00%) (rust !) + linking: 7/10 files (70.00%) (rust !) + linking: 8/10 files (80.00%) (rust !) + linking: 9/10 files (90.00%) (rust !) + linking: 10/10 files (100.00%) (rust !) + linked 10 files (rust !) updating the branch cache Create non-hardlinked clone r3: @@ -85,7 +101,10 @@ Repos r1 and r2 should now contain hardlinked files: $ nlinksdir r1/.hg/store + 1 r1/.hg/store/00changelog-b870a51b.nd (rust !) + 2 r1/.hg/store/00changelog.d 2 r1/.hg/store/00changelog.i + 1 r1/.hg/store/00changelog.n (rust !) 2 r1/.hg/store/00manifest.i 2 r1/.hg/store/data/d1/f2.i 2 r1/.hg/store/data/f1.i @@ -93,11 +112,15 @@ 1 r1/.hg/store/phaseroots 1 r1/.hg/store/requires 1 r1/.hg/store/undo + 1 r1/.hg/store/undo.backup.00changelog.n.bck (rust !) 1 r1/.hg/store/undo.backup.fncache.bck (repofncache !) 1 r1/.hg/store/undo.backupfiles $ nlinksdir r2/.hg/store + 1 r2/.hg/store/00changelog-b870a51b.nd (rust !) + 2 r2/.hg/store/00changelog.d 2 r2/.hg/store/00changelog.i + 1 r2/.hg/store/00changelog.n (rust !) 2 r2/.hg/store/00manifest.i 2 r2/.hg/store/data/d1/f2.i 2 r2/.hg/store/data/f1.i @@ -107,7 +130,10 @@ Repo r3 should not be hardlinked: $ nlinksdir r3/.hg/store + 1 r3/.hg/store/00changelog-88698448.nd (rust !) + 1 r3/.hg/store/00changelog.d 1 r3/.hg/store/00changelog.i + 1 r3/.hg/store/00changelog.n (rust !) 1 r3/.hg/store/00manifest.i 1 r3/.hg/store/data/d1/f2.i 1 r3/.hg/store/data/f1.i @@ -132,7 +158,10 @@ $ cd ../.. $ nlinksdir r3/.hg/store + 1 r3/.hg/store/00changelog-ea337809.nd (rust !) + 1 r3/.hg/store/00changelog.d 1 r3/.hg/store/00changelog.i + 1 r3/.hg/store/00changelog.n (rust !) 1 r3/.hg/store/00manifest.i 1 r3/.hg/store/data/d1/f2.d 1 r3/.hg/store/data/d1/f2.i @@ -141,6 +170,7 @@ 1 r3/.hg/store/phaseroots 1 r3/.hg/store/requires 1 r3/.hg/store/undo + 1 r3/.hg/store/undo.backup.00changelog.n.bck (rust !) 1 r3/.hg/store/undo.backupfiles Push to repo r1 should break up most hardlinks in r2: @@ -159,7 +189,10 @@ $ cd .. $ nlinksdir r2/.hg/store + 1 r2/.hg/store/00changelog-b870a51b.nd (rust !) + 1 r2/.hg/store/00changelog.d 1 r2/.hg/store/00changelog.i + 1 r2/.hg/store/00changelog.n (rust !) 1 r2/.hg/store/00manifest.i 1 r2/.hg/store/data/d1/f2.i 2 r2/.hg/store/data/f1.i @@ -184,7 +217,10 @@ $ cd .. $ nlinksdir r2/.hg/store + 1 r2/.hg/store/00changelog-b870a51b.nd (rust !) + 1 r2/.hg/store/00changelog.d 1 r2/.hg/store/00changelog.i + 1 r2/.hg/store/00changelog.n (rust !) 1 r2/.hg/store/00manifest.i 1 r2/.hg/store/data/d1/f2.i 1 r2/.hg/store/data/f1.i @@ -241,7 +277,10 @@ 2 r4/.hg/hgrc 2 r4/.hg/last-message.txt 2 r4/.hg/requires + 2 r4/.hg/store/00changelog-7f2eb713.nd (rust !) + 2 r4/.hg/store/00changelog.d 2 r4/.hg/store/00changelog.i + 2 r4/.hg/store/00changelog.n (rust !) 2 r4/.hg/store/00manifest.i 2 r4/.hg/store/data/d1/f2.d 2 r4/.hg/store/data/d1/f2.i @@ -251,6 +290,7 @@ 2 r4/.hg/store/phaseroots 2 r4/.hg/store/requires 2 r4/.hg/store/undo + 2 r4/.hg/store/undo.backup.00changelog.n.bck (rust !) 2 r4/.hg/store/undo.backupfiles [24] r4/.hg/undo.backup.branch.bck (re) 2 r4/\.hg/undo\.backup\.dirstate.bck (re) @@ -294,7 +334,10 @@ 2 r4/.hg/hgrc 2 r4/.hg/last-message.txt 2 r4/.hg/requires + 2 r4/.hg/store/00changelog-7f2eb713.nd (rust !) + 2 r4/.hg/store/00changelog.d 2 r4/.hg/store/00changelog.i + 2 r4/.hg/store/00changelog.n (rust !) 2 r4/.hg/store/00manifest.i 2 r4/.hg/store/data/d1/f2.d 2 r4/.hg/store/data/d1/f2.i @@ -304,6 +347,7 @@ 2 r4/.hg/store/phaseroots 2 r4/.hg/store/requires 2 r4/.hg/store/undo + 2 r4/.hg/store/undo.backup.00changelog.n.bck (rust !) 2 r4/.hg/store/undo.backupfiles [23] r4/.hg/undo.backup.branch.bck (re) 2 r4/\.hg/undo\.backup\.dirstate.bck (re) diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-hook.t --- a/tests/test-hook.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-hook.t Mon Dec 11 22:27:59 2023 +0100 @@ -458,14 +458,18 @@ (Check that no 'changelog.i.a' file were left behind) $ ls -1 .hg/store/ + 00changelog-1335303a.nd (rust !) + 00changelog.d 00changelog.i + 00changelog.n (rust !) 00manifest.i data - fncache (repofncache !) + fncache phaseroots requires undo - undo.backup.fncache.bck (repofncache !) + undo.backup.00changelog.n.bck (rust !) + undo.backup.fncache.bck undo.backupfiles diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-http-bad-server.t --- a/tests/test-http-bad-server.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-http-bad-server.t Mon Dec 11 22:27:59 2023 +0100 @@ -725,6 +725,8 @@ $ hg clone http://localhost:$HGPORT/ clone requesting all changes adding changesets + transaction abort! + rollback completed abort: HTTP request error (incomplete response) (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator) [255] @@ -757,6 +759,8 @@ $ hg clone http://localhost:$HGPORT/ clone requesting all changes adding changesets + transaction abort! + rollback completed abort: HTTP request error (incomplete response*) (glob) (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator) [255] @@ -791,6 +795,8 @@ $ hg clone http://localhost:$HGPORT/ clone requesting all changes adding changesets + transaction abort! + rollback completed abort: HTTP request error (incomplete response) (this may be an intermittent network failure; if the error persists, consider contacting the network or server operator) [255] diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-http-bundle1.t --- a/tests/test-http-bundle1.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-http-bundle1.t Mon Dec 11 22:27:59 2023 +0100 @@ -38,8 +38,9 @@ #if no-reposimplestore $ hg clone --stream http://localhost:$HGPORT/ copy 2>&1 streaming all changes - 6 files to transfer, 606 bytes of data (no-zstd !) - 6 files to transfer, 608 bytes of data (zstd !) + 7 files to transfer, 606 bytes of data (no-zstd !) + 7 files to transfer, 608 bytes of data (zstd no-rust !) + 9 files to transfer, 734 bytes of data (zstd rust !) transferred * bytes in * seconds (*/sec) (glob) searching for changes no changes found @@ -218,9 +219,10 @@ #if no-reposimplestore $ hg clone http://user:pass@localhost:$HGPORT2/ dest 2>&1 streaming all changes - 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) + 8 files to transfer, 916 bytes of data (no-zstd !) + 8 files to transfer, 919 bytes of data (zstd no-rust !) + 10 files to transfer, 1.02 KB of data (zstd rust !) + transferred * in * seconds (*/sec) (glob) searching for changes no changes found updating to branch default @@ -378,7 +380,8 @@ streaming all changes * files to transfer, * of data (glob) transferred 1.36 KB in * seconds (* */sec) (glob) (no-zstd !) - transferred 1.38 KB in * seconds (* */sec) (glob) (zstd !) + transferred 1.38 KB in * seconds (* */sec) (glob) (zstd no-rust !) + transferred 1.56 KB in * seconds (* */sec) (glob) (zstd rust !) searching for changes no changes found #endif diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-http-proxy.t --- a/tests/test-http-proxy.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-http-proxy.t Mon Dec 11 22:27:59 2023 +0100 @@ -16,7 +16,8 @@ $ http_proxy=http://localhost:$HGPORT1/ hg --config http_proxy.always=True clone --stream http://localhost:$HGPORT/ b streaming all changes - 6 files to transfer, 412 bytes of data (reporevlogstore !) + 7 files to transfer, 412 bytes of data (reporevlogstore no-rust !) + 9 files to transfer, 538 bytes of data (reporevlogstore rust !) 4 files to transfer, 330 bytes of data (reposimplestore !) transferred * bytes in * seconds (*/sec) (glob) updating to branch default diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-http.t --- a/tests/test-http.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-http.t Mon Dec 11 22:27:59 2023 +0100 @@ -29,8 +29,9 @@ #if no-reposimplestore $ hg clone --stream http://localhost:$HGPORT/ copy 2>&1 streaming all changes - 9 files to transfer, 715 bytes of data (no-zstd !) - 9 files to transfer, 717 bytes of data (zstd !) + 10 files to transfer, 715 bytes of data (no-zstd !) + 10 files to transfer, 717 bytes of data (zstd no-rust !) + 12 files to transfer, 843 bytes of data (zstd rust !) transferred * bytes in * seconds (*/sec) (glob) updating to branch default 4 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -254,7 +255,8 @@ #if no-reposimplestore $ hg clone http://user:pass@localhost:$HGPORT2/ dest 2>&1 streaming all changes - 10 files to transfer, 1.01 KB of data + 11 files to transfer, 1.01 KB of data (no-rust !) + 13 files to transfer, 1.13 KB of data (rust !) transferred * KB in * seconds (*/sec) (glob) updating to branch default 5 files updated, 0 files merged, 0 files removed, 0 files unresolved diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-inherit-mode.t --- a/tests/test-inherit-mode.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-inherit-mode.t Mon Dec 11 22:27:59 2023 +0100 @@ -78,7 +78,10 @@ 00660 ./.hg/last-message.txt 00600 ./.hg/requires 00770 ./.hg/store/ + 00660 ./.hg/store/00changelog-150e1cfc.nd (rust !) + 00660 ./.hg/store/00changelog.d 00660 ./.hg/store/00changelog.i + 00660 ./.hg/store/00changelog.n (rust !) 00660 ./.hg/store/00manifest.i 00770 ./.hg/store/data/ 00770 ./.hg/store/data/dir/ @@ -137,7 +140,10 @@ 00660 ../push/.hg/cache/rbc-revs-v1 00660 ../push/.hg/requires 00770 ../push/.hg/store/ + 00660 ../push/.hg/store/00changelog-b870a51b.nd (rust !) + 00660 ../push/.hg/store/00changelog.d 00660 ../push/.hg/store/00changelog.i + 00660 ../push/.hg/store/00changelog.n (rust !) 00660 ../push/.hg/store/00manifest.i 00770 ../push/.hg/store/data/ 00770 ../push/.hg/store/data/dir/ diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-issue6528.t --- a/tests/test-issue6528.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-issue6528.t Mon Dec 11 22:27:59 2023 +0100 @@ -367,7 +367,7 @@ $ cd repo-to-fix-not-inline $ tar -xf - < "$TESTDIR"/bundles/issue6528.tar $ echo b >> b.txt - $ hg commit -qm "inline -> separate" + $ hg commit -qm "inline -> separate" --traceback $ find .hg -name *b.txt.d .hg/store/data/b.txt.d diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-journal-exists.t --- a/tests/test-journal-exists.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-journal-exists.t Mon Dec 11 22:27:59 2023 +0100 @@ -47,6 +47,8 @@ $ hg -R foo unbundle repo.hg adding changesets + transaction abort! + rollback completed abort: $EACCES$: '$TESTTMP/repo/foo/.hg/store/.00changelog.i-*' (glob) [255] diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-lfs-test-server.t --- a/tests/test-lfs-test-server.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-lfs-test-server.t Mon Dec 11 22:27:59 2023 +0100 @@ -908,7 +908,8 @@ $ cd $TESTTMP $ hg --debug clone test test2 http auth: user foo, password *** - linked 6 files + linked 7 files (no-rust !) + linked 9 files (rust !) http auth: user foo, password *** updating to branch default resolving manifests diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-narrow-clone-stream.t --- a/tests/test-narrow-clone-stream.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-narrow-clone-stream.t Mon Dec 11 22:27:59 2023 +0100 @@ -80,7 +80,10 @@ Making sure store has the required files $ ls .hg/store/ + 00changelog-????????.nd (glob) (rust !) + 00changelog.d 00changelog.i + 00changelog.n (rust !) 00manifest.i data fncache (tree !) diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-parseindex.t --- a/tests/test-parseindex.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-parseindex.t Mon Dec 11 22:27:59 2023 +0100 @@ -145,8 +145,8 @@ > ] > for n, p in poisons: > # corrupt p1 at rev0 and p2 at rev1 - > rev_0 = data[:64 + 63] - > rev_1 = data[64 + 63:] + > rev_0 = data[:64] + > rev_1 = data[64:] > altered_rev_0 = rev_0[:24] + p + rev_0[24 + 4:] > altered_rev_1 = rev_1[:28] + p + rev_1[28 + 4:] > new_data = altered_rev_0 + altered_rev_1 diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-racy-mutations.t --- a/tests/test-racy-mutations.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-racy-mutations.t Mon Dec 11 22:27:59 2023 +0100 @@ -110,7 +110,7 @@ note: use 'hg commit --logfile .hg/last-message.txt --edit' to reuse it transaction abort! rollback completed - abort: 00changelog.i: file cursor at position 249, expected 121 + abort: 00changelog.i: file cursor at position 128, expected 64 And no corruption in the changelog. $ hg debugrevlogindex -c rev linkrev nodeid p1 p2 diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-relink.t --- a/tests/test-relink.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-relink.t Mon Dec 11 22:27:59 2023 +0100 @@ -80,17 +80,19 @@ $ hg relink --debug --config progress.debug=true | fix_path relinking $TESTTMP/repo/.hg/store to $TESTTMP/clone/.hg/store tip has 2 files, estimated total number of files: 3 - collecting: 00changelog.i 1/3 files (33.33%) - collecting: 00manifest.i 2/3 files (66.67%) - collecting: a.i 3/3 files (100.00%) - collecting: b.i 4/3 files (133.33%) - collecting: dummy.i 5/3 files (166.67%) - collected 5 candidate storage files + collecting: 00changelog.d 1/3 files (33.33%) + collecting: 00changelog.i 2/3 files (66.67%) + collecting: 00manifest.i 3/3 files (100.00%) + collecting: a.i 4/3 files (133.33%) + collecting: b.i 5/3 files (166.67%) + collecting: dummy.i 6/3 files (200.00%) + collected 6 candidate storage files + not linkable: 00changelog.d not linkable: 00changelog.i not linkable: 00manifest.i - pruning: data/a.i 3/5 files (60.00%) + pruning: data/a.i 4/6 files (66.67%) not linkable: data/b.i - pruning: data/dummy.i 5/5 files (100.00%) + pruning: data/dummy.i 6/6 files (100.00%) pruned down to 2 probably relinkable files relinking: data/a.i 1/2 files (50.00%) not linkable: data/dummy.i diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-remotefilelog-bgprefetch.t --- a/tests/test-remotefilelog-bgprefetch.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-remotefilelog-bgprefetch.t Mon Dec 11 22:27:59 2023 +0100 @@ -29,10 +29,12 @@ $ hgcloneshallow ssh://user@dummy/master shallow --noupdate streaming all changes - 2 files to transfer, 776 bytes of data (no-zstd !) + 3 files to transfer, 776 bytes of data (no-zstd !) 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 !) + 3 files to transfer, 784 bytes of data (zstd no-rust !) + transferred 784 bytes in * seconds (*/sec) (glob) (zstd no-rust !) + 5 files to transfer, 910 bytes of data (rust !) + transferred 910 bytes in * seconds (*/sec) (glob) (rust !) searching for changes no changes found diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-remotefilelog-clone-tree.t --- a/tests/test-remotefilelog-clone-tree.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-remotefilelog-clone-tree.t Mon Dec 11 22:27:59 2023 +0100 @@ -20,8 +20,10 @@ $ hgcloneshallow ssh://user@dummy/master shallow --noupdate streaming all changes - 4 files to transfer, 449 bytes of data - transferred 449 bytes in * seconds (*/sec) (glob) + 5 files to transfer, 449 bytes of data (no-rust !) + transferred 449 bytes in * seconds (*/sec) (glob) (no-rust !) + 7 files to transfer, 575 bytes of data (rust !) + transferred 575 bytes in *.* seconds (*) (glob) (rust !) searching for changes no changes found $ cd shallow @@ -65,8 +67,10 @@ $ hgcloneshallow ssh://user@dummy/shallow shallow2 --noupdate streaming all changes - 5 files to transfer, 1008 bytes of data - transferred 1008 bytes in * seconds (*/sec) (glob) + 6 files to transfer, 1008 bytes of data (no-rust !) + transferred 1008 bytes in * seconds (*/sec) (glob) (no-rust !) + 8 files to transfer, 1.11 KB of data (rust !) + transferred 1.11 KB in * seconds (* */sec) (glob) (rust !) searching for changes no changes found $ cd shallow2 diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-remotefilelog-clone.t --- a/tests/test-remotefilelog-clone.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-remotefilelog-clone.t Mon Dec 11 22:27:59 2023 +0100 @@ -17,8 +17,10 @@ $ hgcloneshallow ssh://user@dummy/master shallow --noupdate streaming all changes - 2 files to transfer, 227 bytes of data - transferred 227 bytes in * seconds (*/sec) (glob) + 3 files to transfer, 227 bytes of data (no-rust !) + transferred 227 bytes in * seconds (*/sec) (glob) (no-rust !) + 5 files to transfer, 353 bytes of data (rust !) + transferred 353 bytes in *.* seconds (*) (glob) (rust !) searching for changes no changes found $ cd shallow @@ -55,8 +57,10 @@ $ hgcloneshallow ssh://user@dummy/shallow shallow2 --noupdate streaming all changes - 3 files to transfer, 564 bytes of data - transferred 564 bytes in * seconds (*/sec) (glob) + 4 files to transfer, 564 bytes of data (no-rust !) + transferred 564 bytes in * seconds (*/sec) (glob) (no-rust !) + 6 files to transfer, 690 bytes of data (rust !) + transferred 690 bytes in * seconds (*/sec) (glob) (rust !) searching for changes no changes found $ cd shallow2 diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-remotefilelog-log.t --- a/tests/test-remotefilelog-log.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-remotefilelog-log.t Mon Dec 11 22:27:59 2023 +0100 @@ -20,8 +20,10 @@ $ hgcloneshallow ssh://user@dummy/master shallow --noupdate streaming all changes - 2 files to transfer, 473 bytes of data - transferred 473 bytes in * seconds (*/sec) (glob) + 3 files to transfer, 473 bytes of data (no-rust !) + transferred 473 bytes in * seconds (*/sec) (glob) (no-rust !) + 5 files to transfer, 599 bytes of data (rust !) + transferred 599 bytes in * seconds (*/sec) (glob) (rust !) searching for changes no changes found $ cd shallow diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-remotefilelog-partial-shallow.t --- a/tests/test-remotefilelog-partial-shallow.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-remotefilelog-partial-shallow.t Mon Dec 11 22:27:59 2023 +0100 @@ -18,10 +18,12 @@ $ hg clone --shallow ssh://user@dummy/master shallow --noupdate --config remotefilelog.includepattern=foo streaming all changes - 3 files to transfer, 336 bytes of data (no-zstd !) + 4 files to transfer, 336 bytes of data (no-zstd !) 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 !) + 4 files to transfer, 338 bytes of data (zstd no-rust !) + transferred 338 bytes in * seconds (* */sec) (glob) (zstd no-rust !) + 6 files to transfer, 464 bytes of data (zstd rust !) + transferred 464 bytes in * seconds (*/sec) (glob) (zstd rust !) searching for changes no changes found $ cat >> shallow/.hg/hgrc <> shallow/.hg/hgrc < ) > > def extsetup(ui): - > def mmapread(orig, fp): + > def mmapread(orig, fp, *args): > ui.write(b"mmapping %s\n" % pycompat.bytestr(fp.name)) > ui.flush() - > return orig(fp) + > return orig(fp, *args) > > extensions.wrapfunction(util, 'mmapread', mmapread) > EOF @@ -38,6 +38,7 @@ mmap index which is now more than 4k long $ hg log -l 5 -T '{rev}\n' --config experimental.mmapindexthreshold=4k mmapping $TESTTMP/a/.hg/store/00changelog.i + mmapping $TESTTMP/a/.hg/store/00changelog-????????.nd (glob) (rust !) 100 99 98 @@ -46,6 +47,7 @@ do not mmap index which is still less than 32k $ hg log -l 5 -T '{rev}\n' --config experimental.mmapindexthreshold=32k + mmapping $TESTTMP/a/.hg/store/00changelog-????????.nd (glob) (rust !) 100 99 98 diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-ssh-bundle1.t --- a/tests/test-ssh-bundle1.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-ssh-bundle1.t Mon Dec 11 22:27:59 2023 +0100 @@ -62,10 +62,12 @@ $ hg clone --stream ssh://user@dummy/remote local-stream streaming all changes - 4 files to transfer, 602 bytes of data (no-zstd !) + 5 files to transfer, 602 bytes of data (no-zstd !) 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 !) + 5 files to transfer, 621 bytes of data (zstd no-rust !) + transferred 621 bytes in * seconds (* */sec) (glob) (zstd no-rust !) + 7 files to transfer, 747 bytes of data (zstd rust !) + transferred 747 bytes in * seconds (*/sec) (glob) (zstd rust !) searching for changes no changes found updating to branch default @@ -81,10 +83,12 @@ $ hg -R local-stream book mybook $ hg clone --stream ssh://user@dummy/local-stream stream2 streaming all changes - 4 files to transfer, 602 bytes of data (no-zstd !) + 5 files to transfer, 602 bytes of data (no-zstd !) 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 !) + 5 files to transfer, 621 bytes of data (zstd no-rust !) + transferred 621 bytes in * seconds (* */sec) (glob) (zstd no-rust !) + 7 files to transfer, 747 bytes of data (zstd rust !) + transferred 747 bytes in * seconds (*/sec) (glob) (zstd rust !) searching for changes no changes found updating to branch default diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-ssh.t --- a/tests/test-ssh.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-ssh.t Mon Dec 11 22:27:59 2023 +0100 @@ -54,9 +54,10 @@ $ hg clone --stream ssh://user@dummy/remote local-stream streaming all changes - 8 files to transfer, 827 bytes of data (no-zstd !) + 9 files to transfer, 827 bytes of data (no-zstd !) transferred 827 bytes in * seconds (*) (glob) (no-zstd !) - 8 files to transfer, 846 bytes of data (zstd !) + 9 files to transfer, 846 bytes of data (zstd no-rust !) + 11 files to transfer, 972 bytes of data (zstd rust !) transferred * bytes in * seconds (* */sec) (glob) (zstd !) updating to branch default 2 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -71,7 +72,8 @@ $ hg -R local-stream book mybook $ hg clone --stream ssh://user@dummy/local-stream stream2 streaming all changes - 15 files to transfer, * of data (glob) + 16 files to transfer, * of data (glob) (no-rust !) + 18 files to transfer, * of data (glob) (rust !) transferred * in * seconds (*) (glob) updating to branch default 2 files updated, 0 files merged, 0 files removed, 0 files unresolved diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-static-http.t --- a/tests/test-static-http.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-static-http.t Mon Dec 11 22:27:59 2023 +0100 @@ -225,6 +225,7 @@ /.hg/cache/hgtagsfnodes1 /.hg/dirstate /.hg/requires + /.hg/store/00changelog.d /.hg/store/00changelog.i /.hg/store/00manifest.i /.hg/store/data/%7E2ehgsub.i (no-py37 !) @@ -252,6 +253,7 @@ /remote-with-names/.hg/dirstate /remote-with-names/.hg/localtags /remote-with-names/.hg/requires + /remote-with-names/.hg/store/00changelog.d /remote-with-names/.hg/store/00changelog.i /remote-with-names/.hg/store/00manifest.i /remote-with-names/.hg/store/data/%7E2ehgtags.i (no-py37 !) @@ -270,6 +272,7 @@ /remote/.hg/dirstate /remote/.hg/localtags /remote/.hg/requires + /remote/.hg/store/00changelog.d /remote/.hg/store/00changelog.i /remote/.hg/store/00manifest.i /remote/.hg/store/data/%7E2edotfile%20with%20spaces.i (no-py37 !) @@ -292,6 +295,7 @@ /sub/.hg/cache/hgtagsfnodes1 /sub/.hg/dirstate /sub/.hg/requires + /sub/.hg/store/00changelog.d /sub/.hg/store/00changelog.i /sub/.hg/store/00manifest.i /sub/.hg/store/data/%7E2ehgtags.i (no-py37 !) diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-stream-bundle-v2.t --- a/tests/test-stream-bundle-v2.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-stream-bundle-v2.t Mon Dec 11 22:27:59 2023 +0100 @@ -60,9 +60,9 @@ $ hg bundle -a --type="none-v2;stream=$stream_version" bundle.hg $ hg debugbundle bundle.hg Stream params: {} - stream2 -- {bytecount: 1693, filecount: 11, requirements: generaldelta%2Crevlogv1%2Csparserevlog} (mandatory: True) (stream-v2 no-zstd !) - stream2 -- {bytecount: 1693, filecount: 11, requirements: generaldelta%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog} (mandatory: True) (stream-v2 zstd no-rust !) - stream2 -- {bytecount: 1693, filecount: 11, requirements: generaldelta%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog} (mandatory: True) (stream-v2 rust !) + stream2 -- {bytecount: 1693, filecount: 12, requirements: generaldelta%2Crevlogv1%2Csparserevlog} (mandatory: True) (stream-v2 no-zstd !) + stream2 -- {bytecount: 1693, filecount: 12, requirements: generaldelta%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog} (mandatory: True) (stream-v2 zstd no-rust !) + stream2 -- {bytecount: 1819, filecount: 14, requirements: generaldelta%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog} (mandatory: True) (stream-v2 rust !) stream3-exp -- {requirements: generaldelta%2Crevlogv1%2Csparserevlog} (mandatory: True) (stream-v3 no-zstd !) stream3-exp -- {requirements: generaldelta%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog} (mandatory: True) (stream-v3 zstd no-rust !) stream3-exp -- {requirements: generaldelta%2Crevlog-compression-zstd%2Crevlogv1%2Csparserevlog} (mandatory: True) (stream-v3 rust !) @@ -97,7 +97,8 @@ bundle2-input-bundle: with-transaction bundle2-input-part: "stream2" (params: 3 mandatory) supported applying stream bundle - 11 files to transfer, 1.65 KB of data + 12 files to transfer, 1.65 KB of data (no-rust !) + 14 files to transfer, 1.78 KB of data (rust !) starting 4 threads for background file closing (?) starting 4 threads for background file closing (?) adding [s] data/A.i (66 bytes) @@ -107,12 +108,17 @@ adding [s] data/E.i (66 bytes) adding [s] phaseroots (43 bytes) adding [s] 00manifest.i (584 bytes) - adding [s] 00changelog.i (595 bytes) + adding [s] 00changelog.n (62 bytes) (rust !) + adding [s] 00changelog-b875dfc5.nd (64 bytes) (rust !) + adding [s] 00changelog.d (275 bytes) + adding [s] 00changelog.i (320 bytes) adding [c] branch2-served (94 bytes) adding [c] rbc-names-v1 (7 bytes) adding [c] rbc-revs-v1 (40 bytes) - transferred 1.65 KB in * seconds (* */sec) (glob) - bundle2-input-part: total payload size 1840 + transferred 1.65 KB in * seconds (* */sec) (glob) (no-rust !) + bundle2-input-part: total payload size 1857 (no-rust !) + transferred 1.78 KB in * seconds (* */sec) (glob) (rust !) + bundle2-input-part: total payload size 2025 (rust !) bundle2-input-bundle: 1 parts total updating the branch cache finished applying clone bundle @@ -154,7 +160,8 @@ bundle2-input-bundle: with-transaction bundle2-input-part: "stream2" (params: 3 mandatory) supported applying stream bundle - 11 files to transfer, 1.65 KB of data + 12 files to transfer, 1.65 KB of data (no-rust !) + 14 files to transfer, 1.78 KB of data (rust !) starting 4 threads for background file closing (?) starting 4 threads for background file closing (?) adding [s] data/A.i (66 bytes) @@ -164,12 +171,17 @@ adding [s] data/E.i (66 bytes) adding [s] phaseroots (43 bytes) adding [s] 00manifest.i (584 bytes) - adding [s] 00changelog.i (595 bytes) + adding [s] 00changelog.n (62 bytes) (rust !) + adding [s] 00changelog-b875dfc5.nd (64 bytes) (rust !) + adding [s] 00changelog.d (275 bytes) + adding [s] 00changelog.i (320 bytes) adding [c] branch2-served (94 bytes) adding [c] rbc-names-v1 (7 bytes) adding [c] rbc-revs-v1 (40 bytes) - transferred 1.65 KB in * seconds (* */sec) (glob) - bundle2-input-part: total payload size 1840 + transferred 1.65 KB in * seconds (* */sec) (glob) (no-rust !) + bundle2-input-part: total payload size 1857 (no-rust !) + transferred 1.78 KB in * seconds (* */sec) (glob) (rust !) + bundle2-input-part: total payload size 2025 (rust !) bundle2-input-bundle: 1 parts total updating the branch cache finished applying clone bundle @@ -224,12 +236,17 @@ adding [s] data/E.i (66 bytes) adding [s] phaseroots (43 bytes) adding [s] 00manifest.i (584 bytes) - adding [s] 00changelog.i (595 bytes) + adding [s] 00changelog.n (62 bytes) (rust !) + adding [s] 00changelog-b875dfc5.nd (64 bytes) (rust !) + adding [s] 00changelog.d (275 bytes) + adding [s] 00changelog.i (320 bytes) adding [c] branch2-served (94 bytes) adding [c] rbc-names-v1 (7 bytes) adding [c] rbc-revs-v1 (40 bytes) - transferred 1.65 KB in * seconds (* */sec) (glob) - bundle2-input-part: total payload size 1852 + transferred 1.65 KB in * seconds (* */sec) (glob) (no-rust !) + bundle2-input-part: total payload size 1869 (no-rust !) + transferred 1.78 KB in * seconds (* */sec) (glob) (rust !) + bundle2-input-part: total payload size 2037 (rust !) bundle2-input-bundle: 1 parts total updating the branch cache finished applying clone bundle @@ -281,12 +298,17 @@ adding [s] data/E.i (66 bytes) adding [s] phaseroots (43 bytes) adding [s] 00manifest.i (584 bytes) - adding [s] 00changelog.i (595 bytes) + adding [s] 00changelog.n (62 bytes) (rust !) + adding [s] 00changelog-b875dfc5.nd (64 bytes) (rust !) + adding [s] 00changelog.d (275 bytes) + adding [s] 00changelog.i (320 bytes) adding [c] branch2-served (94 bytes) adding [c] rbc-names-v1 (7 bytes) adding [c] rbc-revs-v1 (40 bytes) - transferred 1.65 KB in * seconds (* */sec) (glob) - bundle2-input-part: total payload size 1852 + transferred 1.65 KB in * seconds (* */sec) (glob) (no-rust !) + bundle2-input-part: total payload size 1869 (no-rust !) + transferred 1.78 KB in * seconds (* */sec) (glob) (rust !) + bundle2-input-part: total payload size 2037 (rust !) bundle2-input-bundle: 1 parts total updating the branch cache finished applying clone bundle diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-subrepo-deep-nested-change.t --- a/tests/test-subrepo-deep-nested-change.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-subrepo-deep-nested-change.t Mon Dec 11 22:27:59 2023 +0100 @@ -28,12 +28,22 @@ $ echo "sub2 = ../sub2" > sub1/.hgsub $ hg clone sub2 sub1/sub2 \r (no-eol) (esc) - linking [======> ] 1/6\r (no-eol) (esc) - linking [==============> ] 2/6\r (no-eol) (esc) - linking [=====================> ] 3/6\r (no-eol) (esc) - linking [=============================> ] 4/6\r (no-eol) (esc) - linking [====================================> ] 5/6\r (no-eol) (esc) - linking [============================================>] 6/6\r (no-eol) (esc) + linking [=====> ] 1/7\r (no-eol) (esc) (no-rust !) + linking [===========> ] 2/7\r (no-eol) (esc) (no-rust !) + linking [==================> ] 3/7\r (no-eol) (esc) (no-rust !) + linking [========================> ] 4/7\r (no-eol) (esc) (no-rust !) + linking [===============================> ] 5/7\r (no-eol) (esc) (no-rust !) + linking [=====================================> ] 6/7\r (no-eol) (esc) (no-rust !) + linking [============================================>] 7/7\r (no-eol) (esc) (no-rust !) + linking [====> ] 1/9\r (no-eol) (esc) (rust !) + linking [=========> ] 2/9\r (no-eol) (esc) (rust !) + linking [==============> ] 3/9\r (no-eol) (esc) (rust !) + linking [===================> ] 4/9\r (no-eol) (esc) (rust !) + linking [========================> ] 5/9\r (no-eol) (esc) (rust !) + linking [=============================> ] 6/9\r (no-eol) (esc) (rust !) + linking [==================================> ] 7/9\r (no-eol) (esc) (rust !) + linking [=======================================> ] 8/9\r (no-eol) (esc) (rust !) + linking [============================================>] 9/9\r (no-eol) (esc) (rust !) \r (no-eol) (esc) \r (no-eol) (esc) updating [===========================================>] 1/1\r (no-eol) (esc) @@ -50,32 +60,70 @@ $ hg init main $ echo main > main/main $ echo "sub1 = ../sub1" > main/.hgsub + +#if rust $ hg clone sub1 main/sub1 \r (no-eol) (esc) - linking [====> ] 1/8\r (no-eol) (esc) - linking [==========> ] 2/8\r (no-eol) (esc) - linking [===============> ] 3/8\r (no-eol) (esc) - linking [=====================> ] 4/8\r (no-eol) (esc) - linking [===========================> ] 5/8\r (no-eol) (esc) - linking [================================> ] 6/8\r (no-eol) (esc) - linking [======================================> ] 7/8\r (no-eol) (esc) - linking [============================================>] 8/8\r (no-eol) (esc) + linking [==> ] 1/11\r (no-eol) (esc) + linking [======> ] 2/11\r (no-eol) (esc) + linking [==========> ] 3/11\r (no-eol) (esc) + linking [==============> ] 4/11\r (no-eol) (esc) + linking [==================> ] 5/11\r (no-eol) (esc) + linking [======================> ] 6/11\r (no-eol) (esc) + linking [==========================> ] 7/11\r (no-eol) (esc) + linking [==============================> ] 8/11\r (no-eol) (esc) + linking [==================================> ] 9/11\r (no-eol) (esc) + linking [======================================> ] 10/11\r (no-eol) (esc) + linking [==========================================>] 11/11\r (no-eol) (esc) \r (no-eol) (esc) \r (no-eol) (esc) updating [===========================================>] 3/3\r (no-eol) (esc) \r (no-eol) (esc) \r (no-eol) (esc) - linking [======> ] 1/6\r (no-eol) (esc) - linking [==============> ] 2/6\r (no-eol) (esc) - linking [=====================> ] 3/6\r (no-eol) (esc) - linking [=============================> ] 4/6\r (no-eol) (esc) - linking [====================================> ] 5/6\r (no-eol) (esc) - linking [============================================>] 6/6\r (no-eol) (esc) + linking [====> ] 1/9\r (no-eol) (esc) + linking [=========> ] 2/9\r (no-eol) (esc) + linking [==============> ] 3/9\r (no-eol) (esc) + linking [===================> ] 4/9\r (no-eol) (esc) + linking [========================> ] 5/9\r (no-eol) (esc) + linking [=============================> ] 6/9\r (no-eol) (esc) + linking [==================================> ] 7/9\r (no-eol) (esc) + linking [=======================================> ] 8/9\r (no-eol) (esc) + linking [============================================>] 9/9\r (no-eol) (esc) updating [===========================================>] 1/1\r (no-eol) (esc) \r (no-eol) (esc) updating to branch default cloning subrepo sub2 from $TESTTMP/sub2 3 files updated, 0 files merged, 0 files removed, 0 files unresolved +#else + $ hg clone sub1 main/sub1 + \r (no-eol) (esc) + linking [====> ] 1/9\r (no-eol) (esc) + linking [=========> ] 2/9\r (no-eol) (esc) + linking [==============> ] 3/9\r (no-eol) (esc) + linking [===================> ] 4/9\r (no-eol) (esc) + linking [========================> ] 5/9\r (no-eol) (esc) + linking [=============================> ] 6/9\r (no-eol) (esc) + linking [==================================> ] 7/9\r (no-eol) (esc) + linking [=======================================> ] 8/9\r (no-eol) (esc) + linking [============================================>] 9/9\r (no-eol) (esc) + \r (no-eol) (esc) + \r (no-eol) (esc) + updating [===========================================>] 3/3\r (no-eol) (esc) + \r (no-eol) (esc) + \r (no-eol) (esc) + linking [=====> ] 1/7\r (no-eol) (esc) + linking [===========> ] 2/7\r (no-eol) (esc) + linking [==================> ] 3/7\r (no-eol) (esc) + linking [========================> ] 4/7\r (no-eol) (esc) + linking [===============================> ] 5/7\r (no-eol) (esc) + linking [=====================================> ] 6/7\r (no-eol) (esc) + linking [============================================>] 7/7\r (no-eol) (esc) + updating [===========================================>] 1/1\r (no-eol) (esc) + \r (no-eol) (esc) + updating to branch default + cloning subrepo sub2 from $TESTTMP/sub2 + 3 files updated, 0 files merged, 0 files removed, 0 files unresolved +#endif $ hg add -R main adding main/.hgsub adding main/main @@ -152,44 +200,106 @@ Clone main +#if rust $ hg --config extensions.largefiles= clone main cloned \r (no-eol) (esc) - linking [====> ] 1/8\r (no-eol) (esc) - linking [==========> ] 2/8\r (no-eol) (esc) - linking [===============> ] 3/8\r (no-eol) (esc) - linking [=====================> ] 4/8\r (no-eol) (esc) - linking [===========================> ] 5/8\r (no-eol) (esc) - linking [================================> ] 6/8\r (no-eol) (esc) - linking [======================================> ] 7/8\r (no-eol) (esc) - linking [============================================>] 8/8\r (no-eol) (esc) + linking [====> ] 1/9\r (no-eol) (esc) (no-rust !) + linking [=========> ] 2/9\r (no-eol) (esc) (no-rust !) + linking [==============> ] 3/9\r (no-eol) (esc) (no-rust !) + linking [===================> ] 4/9\r (no-eol) (esc) (no-rust !) + linking [========================> ] 5/9\r (no-eol) (esc) (no-rust !) + linking [=============================> ] 6/9\r (no-eol) (esc) (no-rust !) + linking [==================================> ] 7/9\r (no-eol) (esc) (no-rust !) + linking [=======================================> ] 8/9\r (no-eol) (esc) (no-rust !) + linking [============================================>] 9/9\r (no-eol) (esc) (no-rust !) + linking [==> ] 1/11\r (no-eol) (esc) (rust !) + linking [======> ] 2/11\r (no-eol) (esc) (rust !) + linking [==========> ] 3/11\r (no-eol) (esc) (rust !) + linking [==============> ] 4/11\r (no-eol) (esc) (rust !) + linking [==================> ] 5/11\r (no-eol) (esc) (rust !) + linking [======================> ] 6/11\r (no-eol) (esc) (rust !) + linking [==========================> ] 7/11\r (no-eol) (esc) (rust !) + linking [==============================> ] 8/11\r (no-eol) (esc) (rust !) + linking [==================================> ] 9/11\r (no-eol) (esc) (rust !) + linking [======================================> ] 10/11\r (no-eol) (esc) (rust !) + linking [==========================================>] 11/11\r (no-eol) (esc) (rust !) \r (no-eol) (esc) \r (no-eol) (esc) updating [===========================================>] 3/3\r (no-eol) (esc) \r (no-eol) (esc) \r (no-eol) (esc) - linking [====> ] 1/8\r (no-eol) (esc) - linking [==========> ] 2/8\r (no-eol) (esc) - linking [===============> ] 3/8\r (no-eol) (esc) - linking [=====================> ] 4/8\r (no-eol) (esc) - linking [===========================> ] 5/8\r (no-eol) (esc) - linking [================================> ] 6/8\r (no-eol) (esc) - linking [======================================> ] 7/8\r (no-eol) (esc) - linking [============================================>] 8/8\r (no-eol) (esc) + linking [==> ] 1/11\r (no-eol) (esc) + linking [======> ] 2/11\r (no-eol) (esc) + linking [==========> ] 3/11\r (no-eol) (esc) + linking [==============> ] 4/11\r (no-eol) (esc) + linking [==================> ] 5/11\r (no-eol) (esc) + linking [======================> ] 6/11\r (no-eol) (esc) + linking [==========================> ] 7/11\r (no-eol) (esc) + linking [==============================> ] 8/11\r (no-eol) (esc) + linking [==================================> ] 9/11\r (no-eol) (esc) + linking [======================================> ] 10/11\r (no-eol) (esc) + linking [==========================================>] 11/11\r (no-eol) (esc) updating [===========================================>] 3/3\r (no-eol) (esc) \r (no-eol) (esc) \r (no-eol) (esc) - linking [======> ] 1/6\r (no-eol) (esc) - linking [==============> ] 2/6\r (no-eol) (esc) - linking [=====================> ] 3/6\r (no-eol) (esc) - linking [=============================> ] 4/6\r (no-eol) (esc) - linking [====================================> ] 5/6\r (no-eol) (esc) - linking [============================================>] 6/6\r (no-eol) (esc) + linking [====> ] 1/9\r (no-eol) (esc) + linking [=========> ] 2/9\r (no-eol) (esc) + linking [==============> ] 3/9\r (no-eol) (esc) + linking [===================> ] 4/9\r (no-eol) (esc) + linking [========================> ] 5/9\r (no-eol) (esc) + linking [=============================> ] 6/9\r (no-eol) (esc) + linking [==================================> ] 7/9\r (no-eol) (esc) + linking [=======================================> ] 8/9\r (no-eol) (esc) + linking [============================================>] 9/9\r (no-eol) (esc) updating [===========================================>] 1/1\r (no-eol) (esc) \r (no-eol) (esc) updating to branch default cloning subrepo sub1 from $TESTTMP/sub1 cloning subrepo sub1/sub2 from $TESTTMP/sub2 3 files updated, 0 files merged, 0 files removed, 0 files unresolved +#else + $ hg --config extensions.largefiles= clone main cloned + \r (no-eol) (esc) + linking [====> ] 1/9\r (no-eol) (esc) + linking [=========> ] 2/9\r (no-eol) (esc) + linking [==============> ] 3/9\r (no-eol) (esc) + linking [===================> ] 4/9\r (no-eol) (esc) + linking [========================> ] 5/9\r (no-eol) (esc) + linking [=============================> ] 6/9\r (no-eol) (esc) + linking [==================================> ] 7/9\r (no-eol) (esc) + linking [=======================================> ] 8/9\r (no-eol) (esc) + linking [============================================>] 9/9\r (no-eol) (esc) + \r (no-eol) (esc) + \r (no-eol) (esc) + updating [===========================================>] 3/3\r (no-eol) (esc) + \r (no-eol) (esc) + \r (no-eol) (esc) + linking [====> ] 1/9\r (no-eol) (esc) + linking [=========> ] 2/9\r (no-eol) (esc) + linking [==============> ] 3/9\r (no-eol) (esc) + linking [===================> ] 4/9\r (no-eol) (esc) + linking [========================> ] 5/9\r (no-eol) (esc) + linking [=============================> ] 6/9\r (no-eol) (esc) + linking [==================================> ] 7/9\r (no-eol) (esc) + linking [=======================================> ] 8/9\r (no-eol) (esc) + linking [============================================>] 9/9\r (no-eol) (esc) + updating [===========================================>] 3/3\r (no-eol) (esc) + \r (no-eol) (esc) + \r (no-eol) (esc) + linking [=====> ] 1/7\r (no-eol) (esc) + linking [===========> ] 2/7\r (no-eol) (esc) + linking [==================> ] 3/7\r (no-eol) (esc) + linking [========================> ] 4/7\r (no-eol) (esc) + linking [===============================> ] 5/7\r (no-eol) (esc) + linking [=====================================> ] 6/7\r (no-eol) (esc) + linking [============================================>] 7/7\r (no-eol) (esc) + updating [===========================================>] 1/1\r (no-eol) (esc) + \r (no-eol) (esc) + updating to branch default + cloning subrepo sub1 from $TESTTMP/sub1 + cloning subrepo sub1/sub2 from $TESTTMP/sub2 + 3 files updated, 0 files merged, 0 files removed, 0 files unresolved +#endif Largefiles is NOT enabled in the clone if the source repo doesn't require it $ hg debugrequires -R cloned | grep largefiles diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-subrepo-recursion.t --- a/tests/test-subrepo-recursion.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-subrepo-recursion.t Mon Dec 11 22:27:59 2023 +0100 @@ -454,6 +454,65 @@ #if hardlink $ hg clone -U . ../empty \r (no-eol) (esc) + linking [===> ] 1/10\r (no-eol) (esc) (no-rust !) + linking [=======> ] 2/10\r (no-eol) (esc) (no-rust !) + linking [===========> ] 3/10\r (no-eol) (esc) (no-rust !) + linking [================> ] 4/10\r (no-eol) (esc) (no-rust !) + linking [====================> ] 5/10\r (no-eol) (esc) (no-rust !) + linking [========================> ] 6/10\r (no-eol) (esc) (no-rust !) + linking [=============================> ] 7/10\r (no-eol) (esc) (no-rust !) + linking [=================================> ] 8/10\r (no-eol) (esc) (no-rust !) + linking [=====================================> ] 9/10\r (no-eol) (esc) (no-rust !) + linking [==========================================>] 10/10\r (no-eol) (esc) (no-rust !) + linking [==> ] 1/12\r (no-eol) (esc) (rust !) + linking [======> ] 2/12\r (no-eol) (esc) (rust !) + linking [=========> ] 3/12\r (no-eol) (esc) (rust !) + linking [=============> ] 4/12\r (no-eol) (esc) (rust !) + linking [================> ] 5/12\r (no-eol) (esc) (rust !) + linking [====================> ] 6/12\r (no-eol) (esc) (rust !) + linking [========================> ] 7/12\r (no-eol) (esc) (rust !) + linking [===========================> ] 8/12\r (no-eol) (esc) (rust !) + linking [===============================> ] 9/12\r (no-eol) (esc) (rust !) + linking [==================================> ] 10/12\r (no-eol) (esc) (rust !) + linking [======================================> ] 11/12\r (no-eol) (esc) (rust !) + linking [==========================================>] 12/12\r (no-eol) (esc) (rust !) + \r (no-eol) (esc) +#else + $ hg clone -U . ../empty + \r (no-eol) (esc) + linking [ <=> ] 1 (no-eol) +#endif + + $ cd ../empty +#if hardlink +#if rust + $ hg archive --subrepos -r tip --prefix './' ../archive.tar.gz + \r (no-eol) (esc) + archiving [ ] 0/3\r (no-eol) (esc) + archiving [=============> ] 1/3\r (no-eol) (esc) + archiving [===========================> ] 2/3\r (no-eol) (esc) + archiving [==========================================>] 3/3\r (no-eol) (esc) + \r (no-eol) (esc) + \r (no-eol) (esc) + linking [==> ] 1/11\r (no-eol) (esc) + linking [======> ] 2/11\r (no-eol) (esc) + linking [==========> ] 3/11\r (no-eol) (esc) + linking [==============> ] 4/11\r (no-eol) (esc) + linking [==================> ] 5/11\r (no-eol) (esc) + linking [======================> ] 6/11\r (no-eol) (esc) + linking [==========================> ] 7/11\r (no-eol) (esc) + linking [==============================> ] 8/11\r (no-eol) (esc) + linking [==================================> ] 9/11\r (no-eol) (esc) + linking [======================================> ] 10/11\r (no-eol) (esc) + linking [==========================================>] 11/11\r (no-eol) (esc) + \r (no-eol) (esc) + \r (no-eol) (esc) + archiving (foo) [ ] 0/3\r (no-eol) (esc) + archiving (foo) [===========> ] 1/3\r (no-eol) (esc) + archiving (foo) [=======================> ] 2/3\r (no-eol) (esc) + archiving (foo) [====================================>] 3/3\r (no-eol) (esc) + \r (no-eol) (esc) + \r (no-eol) (esc) linking [====> ] 1/9\r (no-eol) (esc) linking [=========> ] 2/9\r (no-eol) (esc) linking [==============> ] 3/9\r (no-eol) (esc) @@ -464,14 +523,13 @@ linking [=======================================> ] 8/9\r (no-eol) (esc) linking [============================================>] 9/9\r (no-eol) (esc) \r (no-eol) (esc) + \r (no-eol) (esc) + archiving (foo/bar) [ ] 0/1\r (no-eol) (esc) + archiving (foo/bar) [================================>] 1/1\r (no-eol) (esc) + \r (no-eol) (esc) + cloning subrepo foo from $TESTTMP/repo/foo + cloning subrepo foo/bar from $TESTTMP/repo/foo/bar #else - $ hg clone -U . ../empty - \r (no-eol) (esc) - linking [ <=> ] 1 (no-eol) -#endif - - $ cd ../empty -#if hardlink $ hg archive --subrepos -r tip --prefix './' ../archive.tar.gz \r (no-eol) (esc) archiving [ ] 0/3\r (no-eol) (esc) @@ -480,14 +538,15 @@ archiving [==========================================>] 3/3\r (no-eol) (esc) \r (no-eol) (esc) \r (no-eol) (esc) - linking [====> ] 1/8\r (no-eol) (esc) - linking [==========> ] 2/8\r (no-eol) (esc) - linking [===============> ] 3/8\r (no-eol) (esc) - linking [=====================> ] 4/8\r (no-eol) (esc) - linking [===========================> ] 5/8\r (no-eol) (esc) - linking [================================> ] 6/8\r (no-eol) (esc) - linking [======================================> ] 7/8\r (no-eol) (esc) - linking [============================================>] 8/8\r (no-eol) (esc) + linking [====> ] 1/9\r (no-eol) (esc) + linking [=========> ] 2/9\r (no-eol) (esc) + linking [==============> ] 3/9\r (no-eol) (esc) + linking [===================> ] 4/9\r (no-eol) (esc) + linking [========================> ] 5/9\r (no-eol) (esc) + linking [=============================> ] 6/9\r (no-eol) (esc) + linking [==================================> ] 7/9\r (no-eol) (esc) + linking [=======================================> ] 8/9\r (no-eol) (esc) + linking [============================================>] 9/9\r (no-eol) (esc) \r (no-eol) (esc) \r (no-eol) (esc) archiving (foo) [ ] 0/3\r (no-eol) (esc) @@ -496,12 +555,13 @@ archiving (foo) [====================================>] 3/3\r (no-eol) (esc) \r (no-eol) (esc) \r (no-eol) (esc) - linking [======> ] 1/6\r (no-eol) (esc) - linking [==============> ] 2/6\r (no-eol) (esc) - linking [=====================> ] 3/6\r (no-eol) (esc) - linking [=============================> ] 4/6\r (no-eol) (esc) - linking [====================================> ] 5/6\r (no-eol) (esc) - linking [============================================>] 6/6\r (no-eol) (esc) + linking [=====> ] 1/7\r (no-eol) (esc) + linking [===========> ] 2/7\r (no-eol) (esc) + linking [==================> ] 3/7\r (no-eol) (esc) + linking [========================> ] 4/7\r (no-eol) (esc) + linking [===============================> ] 5/7\r (no-eol) (esc) + linking [=====================================> ] 6/7\r (no-eol) (esc) + linking [============================================>] 7/7\r (no-eol) (esc) \r (no-eol) (esc) \r (no-eol) (esc) archiving (foo/bar) [ ] 0/1\r (no-eol) (esc) @@ -509,6 +569,7 @@ \r (no-eol) (esc) cloning subrepo foo from $TESTTMP/repo/foo cloning subrepo foo/bar from $TESTTMP/repo/foo/bar +#endif #else Note there's a slight output glitch on non-hardlink systems: the last "linking" progress topic never gets closed, leading to slight output corruption on that platform. diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-treemanifest.t --- a/tests/test-treemanifest.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-treemanifest.t Mon Dec 11 22:27:59 2023 +0100 @@ -761,7 +761,8 @@ $ hg clone --config experimental.changegroup3=True --stream -U \ > http://localhost:$HGPORT1 stream-clone-basicstore streaming all changes - 28 files to transfer, * of data (glob) + 29 files to transfer, * of data (glob) (no-rust !) + 31 files to transfer, * of data (glob) (rust !) transferred * in * seconds (*) (glob) $ hg -R stream-clone-basicstore verify -q $ cat port-1-errors.log @@ -770,7 +771,8 @@ $ hg clone --config experimental.changegroup3=True --stream -U \ > http://localhost:$HGPORT2 stream-clone-encodedstore streaming all changes - 28 files to transfer, * of data (glob) + 29 files to transfer, * of data (glob) (no-rust !) + 31 files to transfer, * of data (glob) (rust !) transferred * in * seconds (*) (glob) $ hg -R stream-clone-encodedstore verify -q $ cat port-2-errors.log @@ -779,15 +781,17 @@ $ hg clone --config experimental.changegroup3=True --stream -U \ > http://localhost:$HGPORT stream-clone-fncachestore streaming all changes - 22 files to transfer, * of data (glob) + 23 files to transfer, * of data (glob) (no-rust !) + 25 files to transfer, * of data (glob) (rust !) transferred * in * seconds (*) (glob) $ hg -R stream-clone-fncachestore verify -q $ cat port-0-errors.log Packed bundle $ hg -R deeprepo debugcreatestreamclonebundle repo-packed.hg - writing 5330 bytes for 18 files (no-zstd !) - writing 5400 bytes for 18 files (zstd !) + writing 5330 bytes for 19 files (no-zstd !) + writing 5400 bytes for 19 files (zstd no-rust !) + writing 5654 bytes for 21 files (zstd rust !) bundle requirements:.* treemanifest(,.*)? (re) $ hg debugbundle --spec repo-packed.hg none-packed1;requirements%3D(.*%2C)?treemanifest(%2C.*)? (re) diff -r 2e0b2a387502 -r dcaa2df1f688 tests/test-upgrade-repo.t --- a/tests/test-upgrade-repo.t Mon Dec 11 11:50:55 2023 +0100 +++ b/tests/test-upgrade-repo.t Mon Dec 11 22:27:59 2023 +0100 @@ -836,7 +836,10 @@ store directory has files we expect $ ls .hg/store + 00changelog-????????.nd (glob) (rust !) + 00changelog.d 00changelog.i + 00changelog.n (rust !) 00manifest.i data data-s @@ -860,7 +863,10 @@ $ ls -d .hg/upgradebackup.*/ .hg/upgradebackup.*/ (glob) $ ls .hg/upgradebackup.*/store + 00changelog-????????.nd (glob) (rust !) + 00changelog.d 00changelog.i + 00changelog.n (rust !) 00manifest.i data data-s @@ -868,6 +874,7 @@ phaseroots requires undo + undo.backup.00changelog.n.bck (rust !) undo.backup.fncache.bck undo.backupfiles