# HG changeset patch # User Raphaël Gomès # Date 1643819045 -3600 # Node ID e845537f6adb75c8f0a9098da11a9059ce1f699a # Parent 576040155dba8a7e228169c1af59dc1d3fd349b5# Parent 01fde63b4eded708802bfd0d0d4cb4ecc5ff6e1c branching: merge stable into default diff -r 576040155dba -r e845537f6adb .hgsigs --- a/.hgsigs Wed Jan 26 15:32:18 2022 -0800 +++ b/.hgsigs Wed Feb 02 17:24:05 2022 +0100 @@ -221,3 +221,4 @@ a44bb185f6bdbecc754996d8386722e2f0123b0a 0 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 diff -r 576040155dba -r e845537f6adb .hgtags --- a/.hgtags Wed Jan 26 15:32:18 2022 -0800 +++ b/.hgtags Wed Feb 02 17:24:05 2022 +0100 @@ -234,3 +234,4 @@ a44bb185f6bdbecc754996d8386722e2f0123b0a 6.0rc0 5d08b289e2e526259d7d5ea32b70fe76d5b327d7 6.0 799fdf4cca80cb9ae40537a90995e6bd163ebc0b 6.0.1 +75676122c2bf7594ac732b7388db4c74c648b365 6.0.2 diff -r 576040155dba -r e845537f6adb hgext/uncommit.py --- a/hgext/uncommit.py Wed Jan 26 15:32:18 2022 -0800 +++ b/hgext/uncommit.py Wed Feb 02 17:24:05 2022 +0100 @@ -273,6 +273,8 @@ curctx = repo[b'.'] rewriteutil.precheck(repo, [curctx.rev()], b'unamend') + if len(curctx.parents()) > 1: + raise error.InputError(_(b"cannot unamend merge changeset")) # identify the commit to which to unamend markers = list(predecessormarkers(curctx)) diff -r 576040155dba -r e845537f6adb mercurial/branchmap.py --- a/mercurial/branchmap.py Wed Jan 26 15:32:18 2022 -0800 +++ b/mercurial/branchmap.py Wed Feb 02 17:24:05 2022 +0100 @@ -149,6 +149,13 @@ def clear(self): self._per_filter.clear() + def write_delayed(self, repo): + unfi = repo.unfiltered() + for filtername, cache in self._per_filter.items(): + if cache._delayed: + repo = unfi.filtered(filtername) + cache.write(repo) + def _unknownnode(node): """raises ValueError when branchcache found a node which does not exists""" @@ -199,6 +206,7 @@ has a given node or not. If it's not provided, we assume that every node we have exists in changelog""" self._repo = repo + self._delayed = False if tipnode is None: self.tipnode = repo.nullid else: @@ -403,6 +411,13 @@ ) def write(self, repo): + tr = repo.currenttransaction() + if not getattr(tr, 'finalized', True): + # Avoid premature writing. + # + # (The cache warming setup by localrepo will update the file later.) + self._delayed = True + return try: f = repo.cachevfs(self._filename(repo), b"w", atomictemp=True) cachekey = [hex(self.tipnode), b'%d' % self.tiprev] @@ -427,6 +442,7 @@ len(self._entries), nodecount, ) + self._delayed = False except (IOError, OSError, error.Abort) as inst: # Abort may be raised by read only opener, so log and continue repo.ui.debug( diff -r 576040155dba -r e845537f6adb mercurial/configitems.py --- a/mercurial/configitems.py Wed Jan 26 15:32:18 2022 -0800 +++ b/mercurial/configitems.py Wed Feb 02 17:24:05 2022 +0100 @@ -1277,9 +1277,10 @@ # Enable this dirstate format *when creating a new repository*. # Which format to use for existing repos is controlled by .hg/requires b'format', - b'exp-rc-dirstate-v2', + b'use-dirstate-v2', default=False, experimental=True, + alias=[(b'format', b'exp-rc-dirstate-v2')], ) coreconfigitem( b'format', @@ -1851,7 +1852,7 @@ default=b'skip', experimental=True, ) -# experimental as long as format.exp-rc-dirstate-v2 is. +# experimental as long as format.use-dirstate-v2 is. coreconfigitem( b'storage', b'dirstate-v2.slow-path', diff -r 576040155dba -r e845537f6adb mercurial/helptext/config.txt --- a/mercurial/helptext/config.txt Wed Jan 26 15:32:18 2022 -0800 +++ b/mercurial/helptext/config.txt Wed Feb 02 17:24:05 2022 +0100 @@ -915,7 +915,7 @@ Enabled by default. -``exp-rc-dirstate-v2`` +``use-dirstate-v2`` Enable or disable the experimental "dirstate-v2" feature. The dirstate functionality is shared by all commands interacting with the working copy. The new version is more robust, faster and stores more information. @@ -939,7 +939,7 @@ $ hg debugupgraderepo \ --run \ - --config format.exp-rc-dirstate-v2=False \ + --config format.use-dirstate-v2=False \ --config storage.dirstate-v2.slow-path=allow For a more comprehensive guide, see :hg:`help internals.dirstate-v2`. diff -r 576040155dba -r e845537f6adb mercurial/helptext/internals/dirstate-v2.txt --- a/mercurial/helptext/internals/dirstate-v2.txt Wed Jan 26 15:32:18 2022 -0800 +++ b/mercurial/helptext/internals/dirstate-v2.txt Wed Feb 02 17:24:05 2022 +0100 @@ -37,12 +37,12 @@ ------------------------------------------------ When creating a new local repository such as with `hg init` or `hg clone`, -the `exp-rc-dirstate-v2` boolean in the `format` configuration section +the `use-dirstate-v2` boolean in the `format` configuration section controls whether to use this file format. This is disabled by default as of this writing. To enable it for a single repository, run for example:: - $ hg init my-project --config format.exp-rc-dirstate-v2=1 + $ hg init my-project --config format.use-dirstate-v2=1 Checking the format of an existing local repository -------------------------------------------------- @@ -63,15 +63,15 @@ The `debugupgrade` command does various upgrades or downgrades on a local repository based on the current Mercurial version and on configuration. -The same `format.exp-rc-dirstate-v2` configuration is used again. +The same `format.use-dirstate-v2` configuration is used again. Example to upgrade:: - $ hg debugupgrade --config format.exp-rc-dirstate-v2=1 + $ hg debugupgrade --config format.use-dirstate-v2=1 Example to downgrade to `dirstate-v1`:: - $ hg debugupgrade --config format.exp-rc-dirstate-v2=0 + $ hg debugupgrade --config format.use-dirstate-v2=0 Both of this commands do nothing but print a list of proposed changes, which may include changes unrelated to the dirstate. diff -r 576040155dba -r e845537f6adb mercurial/helptext/rust.txt --- a/mercurial/helptext/rust.txt Wed Jan 26 15:32:18 2022 -0800 +++ b/mercurial/helptext/rust.txt Wed Feb 02 17:24:05 2022 +0100 @@ -15,10 +15,11 @@ ======== The following operations are sped up when using Rust: + - discovery of differences between repositories (pull/push) - nodemap (see :hg:`help config.format.use-persistent-nodemap`) - all commands using the dirstate (status, commit, diff, add, update, etc.) - - dirstate-v2 (see :hg:`help config.format.exp-rc-dirstate-v2`) + - dirstate-v2 (see :hg:`help config.format.use-dirstate-v2`) - iteration over ancestors in a graph More features are in the works, and improvements on the above listed are still diff -r 576040155dba -r e845537f6adb mercurial/localrepo.py --- a/mercurial/localrepo.py Wed Jan 26 15:32:18 2022 -0800 +++ b/mercurial/localrepo.py Wed Feb 02 17:24:05 2022 +0100 @@ -1190,7 +1190,7 @@ b"fast implementation." ) hint = _( - b"check `hg help config.format.exp-rc-dirstate-v2` " b"for details" + b"check `hg help config.format.use-dirstate-v2` " b"for details" ) if not dirstate.HAS_FAST_DIRSTATE_V2: if slow_path == b'warn': @@ -2824,6 +2824,8 @@ self.ui.debug(b'updating the branch cache\n') self.filtered(b'served').branchmap() self.filtered(b'served.hidden').branchmap() + # flush all possibly delayed write. + self._branchcaches.write_delayed(self) if repository.CACHE_CHANGELOG_CACHE in caches: self.changelog.update_caches(transaction=tr) @@ -3618,9 +3620,9 @@ if ui.configbool(b'format', b'sparse-revlog'): requirements.add(requirementsmod.SPARSEREVLOG_REQUIREMENT) - # experimental config: format.exp-rc-dirstate-v2 + # experimental config: format.use-dirstate-v2 # Keep this logic in sync with `has_dirstate_v2()` in `tests/hghave.py` - if ui.configbool(b'format', b'exp-rc-dirstate-v2'): + if ui.configbool(b'format', b'use-dirstate-v2'): requirements.add(requirementsmod.DIRSTATE_V2_REQUIREMENT) # experimental config: format.exp-use-copies-side-data-changeset diff -r 576040155dba -r e845537f6adb mercurial/revlog.py --- a/mercurial/revlog.py Wed Jan 26 15:32:18 2022 -0800 +++ b/mercurial/revlog.py Wed Feb 02 17:24:05 2022 +0100 @@ -1971,7 +1971,7 @@ raise error.RevlogError( _(b"%s not found in the transaction") % self._indexfile ) - trindex = 0 + trindex = None tr.add(self._datafile, 0) existing_handles = False @@ -1994,10 +1994,17 @@ with self._indexfp() as read_ifh: for r in self: new_dfh.write(self._getsegmentforrevs(r, r, df=read_ifh)[1]) - if troffset <= self.start(r) + r * self.index.entry_size: + if ( + trindex is None + and troffset + <= self.start(r) + r * self.index.entry_size + ): trindex = r new_dfh.flush() + if trindex is None: + trindex = 0 + with self.__index_new_fp() as fp: self._format_flags &= ~FLAG_INLINE_DATA self._inline = False diff -r 576040155dba -r e845537f6adb mercurial/streamclone.py diff -r 576040155dba -r e845537f6adb mercurial/transaction.py --- a/mercurial/transaction.py Wed Jan 26 15:32:18 2022 -0800 +++ b/mercurial/transaction.py Wed Feb 02 17:24:05 2022 +0100 @@ -229,6 +229,10 @@ if self._journal: self._abort() + @property + def finalized(self): + return self._finalizecallback is None + @active def startgroup(self): """delay registration of file entry diff -r 576040155dba -r e845537f6adb relnotes/6.0 --- a/relnotes/6.0 Wed Jan 26 15:32:18 2022 -0800 +++ b/relnotes/6.0 Wed Feb 02 17:24:05 2022 +0100 @@ -1,3 +1,25 @@ += Mercurial 6.0.2 = + + * Fix `hg incoming` and `hg outgoing` with remote subrepos on Windows + * Fix Rust build on MacOS + * Fix a (15 year old?) bug where some data loss could happen in a very tight race window (f38ae2d7390e + ccd9cb73125c) + * Remove support for running `hg unamend` on merge changesets at it was never actually implemented + * Fix stream-clone requirements filtering which caused some stream-clones to be unusable from an older version of Mercurial + * Rename dirstate-v2 configuration name from `exp-rc-dirstate-v2` to `use-dirstate-v2`. This was overlooked in `6.0`, the old name will be kept as an alias for compatibility. + * Fix a bug where the branchmap could point to uncommitted data + += Mercurial 6.0.1 = + + * Improve documentation around Rust (see hg help rust) and rust-related actions + * Improve upgrade/downgrade edge cases for dirstate-v2 + * Make the test suite nicer to big-endian platforms + * Make the test suite nicer to NetBSD + * Fix a performance regression on fsmonitor (issue6612) + * Add fixes for Python 3.10 + * Fix a deadlock when using sparse and share-safe together + += Mercurial 6.0 = + == New Features == * `debugrebuildfncache` now has an option to rebuild only the index files * a new `bookmarks.mode` path option have been introduced to control the diff -r 576040155dba -r e845537f6adb tests/test-basic.t --- a/tests/test-basic.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-basic.t Wed Feb 02 17:24:05 2022 +0100 @@ -6,7 +6,7 @@ devel.all-warnings=true devel.default-date=0 0 extensions.fsmonitor= (fsmonitor !) - format.exp-rc-dirstate-v2=1 (dirstate-v2 !) + format.use-dirstate-v2=1 (dirstate-v2 !) largefiles.usercache=$TESTTMP/.cache/largefiles lfs.usercache=$TESTTMP/.cache/lfs ui.slash=True diff -r 576040155dba -r e845537f6adb tests/test-branches.t --- a/tests/test-branches.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-branches.t Wed Feb 02 17:24:05 2022 +0100 @@ -1242,3 +1242,99 @@ C 3:4a546028fa8f (inactive) B 1:0bc7d348d965 (inactive) $ cd .. + +Check that the cache are not written too early +---------------------------------------------- + + $ hg log -R branchmap-testing1 -G + o changeset: 3:71ca9a6d524e + |\ branch: A + | | tag: tip + | | parent: 2:a3b807b3ff0b + | | parent: 1:99ba08759bc7 + | | user: debugbuilddag + | | date: Thu Jan 01 00:00:03 1970 +0000 + | | summary: r3 + | | + | o changeset: 2:a3b807b3ff0b + | | branch: A + | | parent: 0:2ab8003a1750 + | | user: debugbuilddag + | | date: Thu Jan 01 00:00:02 1970 +0000 + | | summary: r2 + | | + o | changeset: 1:99ba08759bc7 + |/ branch: A + | tag: p1 + | user: debugbuilddag + | date: Thu Jan 01 00:00:01 1970 +0000 + | summary: r1 + | + o changeset: 0:2ab8003a1750 + branch: A + tag: base + user: debugbuilddag + date: Thu Jan 01 00:00:00 1970 +0000 + summary: r0 + + $ hg bundle -R branchmap-testing1 --base 1 bundle.hg --rev 'head()' + 2 changesets found + +Unbundling revision should warm the served cache + + $ hg clone branchmap-testing1 --rev 1 branchmap-update-01 + adding changesets + adding manifests + adding file changes + added 2 changesets with 0 changes to 0 files + new changesets 2ab8003a1750:99ba08759bc7 + updating to branch A + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ cat branchmap-update-01/.hg/cache/branch2-served + 99ba08759bc7f6fdbe5304e83d0387f35c082479 1 + 99ba08759bc7f6fdbe5304e83d0387f35c082479 o A + $ hg -R branchmap-update-01 unbundle bundle.hg + adding changesets + adding manifests + adding file changes + added 2 changesets with 0 changes to 0 files + new changesets a3b807b3ff0b:71ca9a6d524e (2 drafts) + (run 'hg update' to get a working copy) + $ cat branchmap-update-01/.hg/cache/branch2-served + 71ca9a6d524ed3c2a215119b2086ac3b8c4c8286 3 + 71ca9a6d524ed3c2a215119b2086ac3b8c4c8286 o A + +aborted Unbundle should not update the on disk cache + + $ cat >> simplehook.py << EOF + > import sys + > from mercurial import node + > from mercurial import branchmap + > def hook(ui, repo, *args, **kwargs): + > s = repo.filtered(b"served") + > s.branchmap() + > return 1 + > EOF + $ hg clone branchmap-testing1 --rev 1 branchmap-update-02 + adding changesets + adding manifests + adding file changes + added 2 changesets with 0 changes to 0 files + new changesets 2ab8003a1750:99ba08759bc7 + updating to branch A + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + + $ cat branchmap-update-02/.hg/cache/branch2-served + 99ba08759bc7f6fdbe5304e83d0387f35c082479 1 + 99ba08759bc7f6fdbe5304e83d0387f35c082479 o A + $ hg -R branchmap-update-02 unbundle bundle.hg --config "hooks.pretxnclose=python:$TESTTMP/simplehook.py:hook" + adding changesets + adding manifests + adding file changes + transaction abort! + rollback completed + abort: pretxnclose hook failed + [40] + $ cat branchmap-update-02/.hg/cache/branch2-served + 99ba08759bc7f6fdbe5304e83d0387f35c082479 1 + 99ba08759bc7f6fdbe5304e83d0387f35c082479 o A diff -r 576040155dba -r e845537f6adb tests/test-commandserver.t --- a/tests/test-commandserver.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-commandserver.t Wed Feb 02 17:24:05 2022 +0100 @@ -218,7 +218,7 @@ devel.all-warnings=true devel.default-date=0 0 extensions.fsmonitor= (fsmonitor !) - format.exp-rc-dirstate-v2=1 (dirstate-v2 !) + format.use-dirstate-v2=1 (dirstate-v2 !) largefiles.usercache=$TESTTMP/.cache/largefiles lfs.usercache=$TESTTMP/.cache/lfs ui.slash=True diff -r 576040155dba -r e845537f6adb tests/test-dirstate-race.t --- a/tests/test-dirstate-race.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-dirstate-race.t Wed Feb 02 17:24:05 2022 +0100 @@ -3,7 +3,7 @@ #if dirstate-v2 $ cat >> $HGRCPATH << EOF > [format] - > exp-rc-dirstate-v2=1 + > use-dirstate-v2=1 > [storage] > dirstate-v2.slow-path=allow > EOF diff -r 576040155dba -r e845537f6adb tests/test-dirstate-race2.t --- a/tests/test-dirstate-race2.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-dirstate-race2.t Wed Feb 02 17:24:05 2022 +0100 @@ -3,7 +3,7 @@ #if dirstate-v2 $ cat >> $HGRCPATH << EOF > [format] - > exp-rc-dirstate-v2=1 + > use-dirstate-v2=1 > [storage] > dirstate-v2.slow-path=allow > EOF diff -r 576040155dba -r e845537f6adb tests/test-dirstate.t --- a/tests/test-dirstate.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-dirstate.t Wed Feb 02 17:24:05 2022 +0100 @@ -3,7 +3,7 @@ #if dirstate-v2 $ cat >> $HGRCPATH << EOF > [format] - > exp-rc-dirstate-v2=1 + > use-dirstate-v2=1 > [storage] > dirstate-v2.slow-path=allow > EOF diff -r 576040155dba -r e845537f6adb tests/test-help.t --- a/tests/test-help.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-help.t Wed Feb 02 17:24:05 2022 +0100 @@ -1597,7 +1597,7 @@ "usefncache" - "exp-rc-dirstate-v2" + "use-dirstate-v2" "use-persistent-nodemap" diff -r 576040155dba -r e845537f6adb tests/test-hgignore.t --- a/tests/test-hgignore.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-hgignore.t Wed Feb 02 17:24:05 2022 +0100 @@ -3,7 +3,7 @@ #if dirstate-v2 $ cat >> $HGRCPATH << EOF > [format] - > exp-rc-dirstate-v2=1 + > use-dirstate-v2=1 > [storage] > dirstate-v2.slow-path=allow > EOF diff -r 576040155dba -r e845537f6adb tests/test-permissions.t --- a/tests/test-permissions.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-permissions.t Wed Feb 02 17:24:05 2022 +0100 @@ -5,7 +5,7 @@ #if dirstate-v2 $ cat >> $HGRCPATH << EOF > [format] - > exp-rc-dirstate-v2=1 + > use-dirstate-v2=1 > [storage] > dirstate-v2.slow-path=allow > EOF diff -r 576040155dba -r e845537f6adb tests/test-persistent-nodemap.t --- a/tests/test-persistent-nodemap.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-persistent-nodemap.t Wed Feb 02 17:24:05 2022 +0100 @@ -800,7 +800,7 @@ requirements preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !) - preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !) + preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !) removed: persistent-nodemap processed revlogs: @@ -844,7 +844,7 @@ requirements preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !) - preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !) + preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !) added: persistent-nodemap processed revlogs: @@ -876,7 +876,7 @@ requirements preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !) - preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !) + preserved: dotencode, use-dirstate-v2, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !) optimisations: re-delta-all diff -r 576040155dba -r e845537f6adb tests/test-purge.t --- a/tests/test-purge.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-purge.t Wed Feb 02 17:24:05 2022 +0100 @@ -3,7 +3,7 @@ #if dirstate-v2 $ cat >> $HGRCPATH << EOF > [format] - > exp-rc-dirstate-v2=1 + > use-dirstate-v2=1 > [storage] > dirstate-v2.slow-path=allow > EOF diff -r 576040155dba -r e845537f6adb tests/test-share-safe.t --- a/tests/test-share-safe.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-share-safe.t Wed Feb 02 17:24:05 2022 +0100 @@ -225,7 +225,7 @@ requirements preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-dirstate-v2 !) - preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (dirstate-v2 !) + preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (dirstate-v2 !) added: revlog-compression-zstd processed revlogs: @@ -253,8 +253,8 @@ requirements preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !) - preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd dirstate-v2 !) - preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !) + preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd dirstate-v2 !) + preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !) added: persistent-nodemap processed revlogs: @@ -360,7 +360,7 @@ $ hg debugupgraderepo -q requirements preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) - preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) + preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) added: share-safe no revlogs to process @@ -370,7 +370,7 @@ requirements preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) - preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) + preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) added: share-safe share-safe @@ -448,7 +448,7 @@ $ hg debugupgraderepo -q requirements preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) - preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) + preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) removed: share-safe no revlogs to process @@ -458,7 +458,7 @@ requirements preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) - preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) + preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) removed: share-safe no revlogs to process @@ -541,7 +541,7 @@ requirements preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) - preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) + preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) added: share-safe no revlogs to process diff -r 576040155dba -r e845537f6adb tests/test-status.t --- a/tests/test-status.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-status.t Wed Feb 02 17:24:05 2022 +0100 @@ -3,7 +3,7 @@ #if dirstate-v2 $ cat >> $HGRCPATH << EOF > [format] - > exp-rc-dirstate-v2=1 + > use-dirstate-v2=1 > [storage] > dirstate-v2.slow-path=allow > EOF diff -r 576040155dba -r e845537f6adb tests/test-stream-bundle-v2.t diff -r 576040155dba -r e845537f6adb tests/test-symlinks.t --- a/tests/test-symlinks.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-symlinks.t Wed Feb 02 17:24:05 2022 +0100 @@ -5,7 +5,7 @@ #if dirstate-v2 $ cat >> $HGRCPATH << EOF > [format] - > exp-rc-dirstate-v2=1 + > use-dirstate-v2=1 > [storage] > dirstate-v2.slow-path=allow > EOF diff -r 576040155dba -r e845537f6adb tests/test-transaction-rollback-on-revlog-split.t --- a/tests/test-transaction-rollback-on-revlog-split.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-transaction-rollback-on-revlog-split.t Wed Feb 02 17:24:05 2022 +0100 @@ -17,22 +17,28 @@ > extensions.wrapfunction(util.atomictempfile, 'close', close) > EOF -Test offset computation to correctly factor in the index entries themselve. +Test offset computation to correctly factor in the index entries themselves. Also test that the new data size has the correct size if the transaction is aborted after the index has been replaced. -Test repo has one small, one moderate and one big change. The clone has -the small and moderate change and will transition to non-inline storage when -adding the big change. +Test repo has commits a, b, c, D, where D is large (grows the revlog enough that it +transitions to non-inline storage). The clone initially has changes a, b +and will transition to non-inline storage when adding c, D. + +If the transaction adding c, D is rolled back, then we don't undo the revlog split, +but truncate the index and the data to remove both c and D. $ hg init troffset-computation --config format.revlog-compression=none $ cd troffset-computation $ printf '%20d' '1' > file - $ hg commit -Aqm_ + $ hg commit -Aqma $ printf '%1024d' '1' > file - $ hg commit -Aqm_ + $ hg commit -Aqmb + $ printf '%20d' '1' > file + $ hg commit -Aqmc $ dd if=/dev/zero of=file bs=1k count=128 > /dev/null 2>&1 - $ hg commit -Aqm_ + $ hg commit -AqmD + $ cd .. $ hg clone -r 1 troffset-computation troffset-computation-copy --config format.revlog-compression=none -q @@ -59,7 +65,7 @@ $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file | tail -1 data/file.i 128 -The first file.i entry should match the size above. +The first file.i entry should match the "Reference size" above. The first file.d entry is the temporary record during the split, the second entry after the split happened. The sum of the second file.d and the second file.i entry should match the first file.i entry. @@ -76,11 +82,11 @@ .hg/store/data/file.d: size=1046 .hg/store/data/file.i: size=128 $ hg tip - changeset: 1:3ce491143aec + changeset: 1:cfa8d6e60429 tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 - summary: _ + summary: b $ hg verify -q warning: revlog 'data/file.d' not in fncache! @@ -126,11 +132,11 @@ .hg/store/data/file.d: size=1046 .hg/store/data/file.i: size=1174 $ hg tip - changeset: 1:3ce491143aec + changeset: 1:cfa8d6e60429 tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 - summary: _ + summary: b $ hg verify -q $ cd .. @@ -158,11 +164,11 @@ .hg/store/data/file.d: size=1046 .hg/store/data/file.i: size=128 $ hg tip - changeset: 1:3ce491143aec + changeset: 1:cfa8d6e60429 tag: tip user: test date: Thu Jan 01 00:00:00 1970 +0000 - summary: _ + summary: b $ hg verify -q warning: revlog 'data/file.d' not in fncache! diff -r 576040155dba -r e845537f6adb tests/test-unamend.t --- a/tests/test-unamend.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-unamend.t Wed Feb 02 17:24:05 2022 +0100 @@ -421,3 +421,27 @@ A d b R b + +Try to unamend a merge + + $ cd .. + $ hg init merge + $ cd merge + $ echo initial > initial + $ hg ci -Aqm initial + $ echo left > left + $ hg ci -Aqm left + $ hg co -q 0 + $ echo right > right + $ hg ci -Aqm right + $ hg merge -q 1 + $ hg ci -m merge + $ echo accidental > initial + $ hg st --rev 1 --rev . + A right + $ hg st --rev 2 --rev . + A left + $ hg amend + $ hg unamend + abort: cannot unamend merge changeset + [10] diff -r 576040155dba -r e845537f6adb tests/test-upgrade-repo.t --- a/tests/test-upgrade-repo.t Wed Jan 26 15:32:18 2022 -0800 +++ b/tests/test-upgrade-repo.t Wed Feb 02 17:24:05 2022 +0100 @@ -1713,9 +1713,9 @@ Upgrade to dirstate-v2 - $ hg debugformat -v --config format.exp-rc-dirstate-v2=1 | grep dirstate-v2 + $ hg debugformat -v --config format.use-dirstate-v2=1 | grep dirstate-v2 dirstate-v2: no yes no - $ hg debugupgraderepo --config format.exp-rc-dirstate-v2=1 --run + $ hg debugupgraderepo --config format.use-dirstate-v2=1 --run upgrade will perform the following actions: requirements @@ -1769,14 +1769,14 @@ dirstate-v2: upgrade and downgrade from and empty repository: ------------------------------------------------------------- - $ hg init --config format.exp-rc-dirstate-v2=no dirstate-v2-empty + $ hg init --config format.use-dirstate-v2=no dirstate-v2-empty $ cd dirstate-v2-empty $ hg debugformat | grep dirstate-v2 dirstate-v2: no upgrade - $ hg debugupgraderepo --run --config format.exp-rc-dirstate-v2=yes + $ hg debugupgraderepo --run --config format.use-dirstate-v2=yes upgrade will perform the following actions: requirements @@ -1800,7 +1800,7 @@ downgrade - $ hg debugupgraderepo --run --config format.exp-rc-dirstate-v2=no + $ hg debugupgraderepo --run --config format.use-dirstate-v2=no upgrade will perform the following actions: requirements