Show More
@@ -221,3 +221,4 b' 6ee0244fc1cf889ae543d2ce0ec45201ae0be6e1' | |||
|
221 | 221 | a44bb185f6bdbecc754996d8386722e2f0123b0a 0 iQJJBAABCgAzFiEEgY2HzRrBgMOUyG5jOjPeRg2ew58FAmGKo4sVHDc4OTVwdWxraXRAZ21haWwuY29tAAoJEDoz3kYNnsOffmQP/jsOxxP0F9TliKYp7YjgMagtnebk+qdbq9pX8y8GdjGirRwCy/rMm3pXMNQDiWd3ZdYLICZIz8aSYbPL6HD78O6F68IWOVG5AwLM6knUNcEzmrPoFnSU1J7jaz8ERFmfNV6loes3oYj/VhRUDiFEmG1sflCc1iXvTEXaOi2PObo7iORR/2JtOlMQI7bASBTo0F7QTRzOuh+SzgJ6ItqpvjC+I2Iidn8yZ/F3jZXZ24on/D+b2nLQ5b7yc7pzVNyqiTFF6xHQEtRjNRv+hLS9mdD/oI6Vhwmfv7GD8U4MyudDfz5GEv2AE9cwOKRONfHdXhFX3UiubaDmDlo+mE3xXIPYJoTtadoUhVItCe5YAlp9P6uEAaWk/Z1zI+9ydYACycO0RySrphRJ3DmDITs7D2bQEsK/YB1NBzwlUJVFiTu8x2+taBk3vO66cfuyubvPXpdZs6VcnIxSMfduP29zYLj7L1YZo58y3qhKeWcZexYSBT/dtGZlOOdobI/t9YHKnrUtzUCL9JIuxqn06+dSU9DlNuOd19Mdr2wu+xncuzlkd+Y4DavctrA0uSw4CAID6e5UIoknAeOzMSFySZ+JLw79z1LpFx/t3wof5ySC6olLO1NFesK89NAYszIjeTOQnpcK9sA2OaANTDbC7sX12OmpPlRySNcNRsaNgux6Bnl4 |
|
222 | 222 | 5d08b289e2e526259d7d5ea32b70fe76d5b327d7 0 iQJJBAABCgAzFiEEgY2HzRrBgMOUyG5jOjPeRg2ew58FAmGcvOQVHDc4OTVwdWxraXRAZ21haWwuY29tAAoJEDoz3kYNnsOfNcAP/0zjJ+vfms7hBPltQJxzRX3JaMSDGyFB6+0CXJnEHClcjmcmmFq7yPYSZhO1/wRwNDag1A+xOr+xch0VHy3s2L4JDVqpTEIGDVX9MZxqDYdFMpMmx63KQeOraTbd8MCpbsiCsp+yQWwQ0k8sjajY2FhpJFezcD8EVH+XQJSkBsPGQZGezNt6IVlnsnBpTl6abVFWrsHhpos1Wa7iJM/sS91dy9We5H3B1eEn8KOMyj3eWEA6D8D29kCS66E8+AQ+f9ctresD2g/6xS1P4CTgvqacS+gj04rMUKmmQUoMzAXlS4wO2F6J0mWdKfZsv/urfJx7oc5GZysrXw+T/YLxFKuxls1uCq6mTBxbf/aJ91G4m0UT/fczNrQaDDhPIFEZVktd18NphUOebTGxDiCW/mk9IOXxEI7bprlBdBBM3dkCAg+O0h8kdN007jjoLIiTw7K+XZ1A41zqGqXMQ2R/0xTltX9NXAe9xNhAEQhwSCH2TsB5IKI6+EHE6ZaNsyuwvlPhaQXfmOU22JBlUGE9IdEU5whd9760xJYTx3WEnbuED0UltAt3vgyvq+li1/Z7HDuzUyNha8YsaPw2QeHFUFwzxqoxo501/eDs9bXjBt7E4vsYVQC51sb3uS9kRbBB9GOiyx/HICZcbEQjy5TxVW5Bp0uD6Fu3nRytL0DDDIDF |
|
223 | 223 | 799fdf4cca80cb9ae40537a90995e6bd163ebc0b 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmHVzPMZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVmiyC/48p6+/JJi8WaY+Xdxh1IMK1/CB3dYcC99+V89asIW+g/X/0FacTSSAGkvDrjNSeYAkXGp3g/LbEbwoZhKxF8MyKU7TOn62lz8JETwebtjxehjVfPUy73RJbuLPDvn9m16YHxuC848hDZHnqk/PjaBVHeZ2cN8T7F9VgXkhyYStV9GT2PSQUsvkQAxjiLilyKs3RaZAduZPvOmGaq2CfK91PbScKaKgYShkKym7gfhU1o4pynNmuPqRwUJyihaZqsKDjOn8OHeJpqAm7ODmR+SIOvMvFbbfS8mTSfYMHsP+r+JgbqSVNG99qEqsIW3HznGe/OpG/1QS3MVVSyi87oHR1UcN91vKIiln92i+7Ct7GttjkgkkqfQEw1oAELCmiHacYEBbLvQGaXdHROeO6wqXUKvI4KeM3CPt2qsouPiKBzSF1eOPd967NNvgTgcabT2ob0YaXmWdZasJnZ74H/3FMMC98WhYe3ja+6cpl67PZlNUWlnIZBlyL63DWSJ09us= |
|
224 | 75676122c2bf7594ac732b7388db4c74c648b365 0 iQHNBAABCgA3FiEEH2b4zfZU6QXBHaBhoR4BzQ4F2VYFAmH6qwUZHGFscGhhcmVAcmFwaGFlbGdvbWVzLmRldgAKCRChHgHNDgXZVogkC/4hgjtCXykyst2XuC93IkWdRoXiFn2+C/r/eX25el//+Og5T0KZmttFGrmTCSCdb/ZkjPg1ZHYBUK9gyQCOXoimATIeql/USCcglpVBRMTaaqvpJyHA1antI0HIsNFGjDTIxHsJXgghMEv7qVR33ItpZ8gtWbJJLewOwi2UHtLcmif77SgpeADh/E/PuQT+0Wd5gA6jk9Fml7VBP/nU81j25ZyxB6p8oUv4gFSNDZtrnA97mQ35jYZZITl8e80Y9Z/8KJFcRk29kxIudOikwn6AD7ZW/H85a3lDOtTMhgBDNlMxvXx6eviKfsrIVtNCm6QDF+36VstTR+idWyhnkq8g20NXcgWt79/CTWT7ssFmzdsHhdhWfJF99I0R0FCG0DSV313UmleZawavG1btOh4qCjTAWF5gnvsHfEIV1SAnDeeD6T27c8yIW7au9QXlkZds0xmFWLqkl6TxKpl7oa/bGDArAvOA3zHAeMlwXQKhhthjR7fU9PQnWsFXCt43GVo= |
@@ -234,3 +234,4 b' 6ee0244fc1cf889ae543d2ce0ec45201ae0be6e1' | |||
|
234 | 234 | a44bb185f6bdbecc754996d8386722e2f0123b0a 6.0rc0 |
|
235 | 235 | 5d08b289e2e526259d7d5ea32b70fe76d5b327d7 6.0 |
|
236 | 236 | 799fdf4cca80cb9ae40537a90995e6bd163ebc0b 6.0.1 |
|
237 | 75676122c2bf7594ac732b7388db4c74c648b365 6.0.2 |
@@ -273,6 +273,8 b' def unamend(ui, repo, **opts):' | |||
|
273 | 273 | curctx = repo[b'.'] |
|
274 | 274 | |
|
275 | 275 | rewriteutil.precheck(repo, [curctx.rev()], b'unamend') |
|
276 | if len(curctx.parents()) > 1: | |
|
277 | raise error.InputError(_(b"cannot unamend merge changeset")) | |
|
276 | 278 | |
|
277 | 279 | # identify the commit to which to unamend |
|
278 | 280 | markers = list(predecessormarkers(curctx)) |
@@ -149,6 +149,13 b' class BranchMapCache(object):' | |||
|
149 | 149 | def clear(self): |
|
150 | 150 | self._per_filter.clear() |
|
151 | 151 | |
|
152 | def write_delayed(self, repo): | |
|
153 | unfi = repo.unfiltered() | |
|
154 | for filtername, cache in self._per_filter.items(): | |
|
155 | if cache._delayed: | |
|
156 | repo = unfi.filtered(filtername) | |
|
157 | cache.write(repo) | |
|
158 | ||
|
152 | 159 | |
|
153 | 160 | def _unknownnode(node): |
|
154 | 161 | """raises ValueError when branchcache found a node which does not exists""" |
@@ -199,6 +206,7 b' class branchcache(object):' | |||
|
199 | 206 | has a given node or not. If it's not provided, we assume that every node |
|
200 | 207 | we have exists in changelog""" |
|
201 | 208 | self._repo = repo |
|
209 | self._delayed = False | |
|
202 | 210 | if tipnode is None: |
|
203 | 211 | self.tipnode = repo.nullid |
|
204 | 212 | else: |
@@ -403,6 +411,13 b' class branchcache(object):' | |||
|
403 | 411 | ) |
|
404 | 412 | |
|
405 | 413 | def write(self, repo): |
|
414 | tr = repo.currenttransaction() | |
|
415 | if not getattr(tr, 'finalized', True): | |
|
416 | # Avoid premature writing. | |
|
417 | # | |
|
418 | # (The cache warming setup by localrepo will update the file later.) | |
|
419 | self._delayed = True | |
|
420 | return | |
|
406 | 421 | try: |
|
407 | 422 | f = repo.cachevfs(self._filename(repo), b"w", atomictemp=True) |
|
408 | 423 | cachekey = [hex(self.tipnode), b'%d' % self.tiprev] |
@@ -427,6 +442,7 b' class branchcache(object):' | |||
|
427 | 442 | len(self._entries), |
|
428 | 443 | nodecount, |
|
429 | 444 | ) |
|
445 | self._delayed = False | |
|
430 | 446 | except (IOError, OSError, error.Abort) as inst: |
|
431 | 447 | # Abort may be raised by read only opener, so log and continue |
|
432 | 448 | repo.ui.debug( |
@@ -1277,9 +1277,10 b' coreconfigitem(' | |||
|
1277 | 1277 | # Enable this dirstate format *when creating a new repository*. |
|
1278 | 1278 | # Which format to use for existing repos is controlled by .hg/requires |
|
1279 | 1279 | b'format', |
|
1280 |
b'e |
|
|
1280 | b'use-dirstate-v2', | |
|
1281 | 1281 | default=False, |
|
1282 | 1282 | experimental=True, |
|
1283 | alias=[(b'format', b'exp-rc-dirstate-v2')], | |
|
1283 | 1284 | ) |
|
1284 | 1285 | coreconfigitem( |
|
1285 | 1286 | b'format', |
@@ -1851,7 +1852,7 b' coreconfigitem(' | |||
|
1851 | 1852 | default=b'skip', |
|
1852 | 1853 | experimental=True, |
|
1853 | 1854 | ) |
|
1854 |
# experimental as long as format.e |
|
|
1855 | # experimental as long as format.use-dirstate-v2 is. | |
|
1855 | 1856 | coreconfigitem( |
|
1856 | 1857 | b'storage', |
|
1857 | 1858 | b'dirstate-v2.slow-path', |
@@ -915,7 +915,7 b' https://www.mercurial-scm.org/wiki/Missi' | |||
|
915 | 915 | |
|
916 | 916 | Enabled by default. |
|
917 | 917 | |
|
918 |
``e |
|
|
918 | ``use-dirstate-v2`` | |
|
919 | 919 | Enable or disable the experimental "dirstate-v2" feature. The dirstate |
|
920 | 920 | functionality is shared by all commands interacting with the working copy. |
|
921 | 921 | The new version is more robust, faster and stores more information. |
@@ -939,7 +939,7 b' https://www.mercurial-scm.org/wiki/Missi' | |||
|
939 | 939 | |
|
940 | 940 | $ hg debugupgraderepo \ |
|
941 | 941 | --run \ |
|
942 |
--config format.e |
|
|
942 | --config format.use-dirstate-v2=False \ | |
|
943 | 943 | --config storage.dirstate-v2.slow-path=allow |
|
944 | 944 | |
|
945 | 945 | For a more comprehensive guide, see :hg:`help internals.dirstate-v2`. |
@@ -37,12 +37,12 b' Enabling `dirstate-v2` for new local rep' | |||
|
37 | 37 | ------------------------------------------------ |
|
38 | 38 | |
|
39 | 39 | When creating a new local repository such as with `hg init` or `hg clone`, |
|
40 |
the `e |
|
|
40 | the `use-dirstate-v2` boolean in the `format` configuration section | |
|
41 | 41 | controls whether to use this file format. |
|
42 | 42 | This is disabled by default as of this writing. |
|
43 | 43 | To enable it for a single repository, run for example:: |
|
44 | 44 | |
|
45 |
$ hg init my-project --config format.e |
|
|
45 | $ hg init my-project --config format.use-dirstate-v2=1 | |
|
46 | 46 | |
|
47 | 47 | Checking the format of an existing local repository |
|
48 | 48 | -------------------------------------------------- |
@@ -63,15 +63,15 b' Upgrading or downgrading an existing loc' | |||
|
63 | 63 | The `debugupgrade` command does various upgrades or downgrades |
|
64 | 64 | on a local repository |
|
65 | 65 | based on the current Mercurial version and on configuration. |
|
66 |
The same `format.e |
|
|
66 | The same `format.use-dirstate-v2` configuration is used again. | |
|
67 | 67 | |
|
68 | 68 | Example to upgrade:: |
|
69 | 69 | |
|
70 |
$ hg debugupgrade --config format.e |
|
|
70 | $ hg debugupgrade --config format.use-dirstate-v2=1 | |
|
71 | 71 | |
|
72 | 72 | Example to downgrade to `dirstate-v1`:: |
|
73 | 73 | |
|
74 |
$ hg debugupgrade --config format.e |
|
|
74 | $ hg debugupgrade --config format.use-dirstate-v2=0 | |
|
75 | 75 | |
|
76 | 76 | Both of this commands do nothing but print a list of proposed changes, |
|
77 | 77 | which may include changes unrelated to the dirstate. |
@@ -15,10 +15,11 b' Features' | |||
|
15 | 15 | ======== |
|
16 | 16 | |
|
17 | 17 | The following operations are sped up when using Rust: |
|
18 | ||
|
18 | 19 | - discovery of differences between repositories (pull/push) |
|
19 | 20 | - nodemap (see :hg:`help config.format.use-persistent-nodemap`) |
|
20 | 21 | - all commands using the dirstate (status, commit, diff, add, update, etc.) |
|
21 |
- dirstate-v2 (see :hg:`help config.format.e |
|
|
22 | - dirstate-v2 (see :hg:`help config.format.use-dirstate-v2`) | |
|
22 | 23 | - iteration over ancestors in a graph |
|
23 | 24 | |
|
24 | 25 | More features are in the works, and improvements on the above listed are still |
@@ -1190,7 +1190,7 b' def resolverevlogstorevfsoptions(ui, req' | |||
|
1190 | 1190 | b"fast implementation." |
|
1191 | 1191 | ) |
|
1192 | 1192 | hint = _( |
|
1193 |
b"check `hg help config.format.e |
|
|
1193 | b"check `hg help config.format.use-dirstate-v2` " b"for details" | |
|
1194 | 1194 | ) |
|
1195 | 1195 | if not dirstate.HAS_FAST_DIRSTATE_V2: |
|
1196 | 1196 | if slow_path == b'warn': |
@@ -2824,6 +2824,8 b' class localrepository(object):' | |||
|
2824 | 2824 | self.ui.debug(b'updating the branch cache\n') |
|
2825 | 2825 | self.filtered(b'served').branchmap() |
|
2826 | 2826 | self.filtered(b'served.hidden').branchmap() |
|
2827 | # flush all possibly delayed write. | |
|
2828 | self._branchcaches.write_delayed(self) | |
|
2827 | 2829 | |
|
2828 | 2830 | if repository.CACHE_CHANGELOG_CACHE in caches: |
|
2829 | 2831 | self.changelog.update_caches(transaction=tr) |
@@ -3618,9 +3620,9 b' def newreporequirements(ui, createopts):' | |||
|
3618 | 3620 | if ui.configbool(b'format', b'sparse-revlog'): |
|
3619 | 3621 | requirements.add(requirementsmod.SPARSEREVLOG_REQUIREMENT) |
|
3620 | 3622 | |
|
3621 |
# experimental config: format.e |
|
|
3623 | # experimental config: format.use-dirstate-v2 | |
|
3622 | 3624 | # Keep this logic in sync with `has_dirstate_v2()` in `tests/hghave.py` |
|
3623 |
if ui.configbool(b'format', b'e |
|
|
3625 | if ui.configbool(b'format', b'use-dirstate-v2'): | |
|
3624 | 3626 | requirements.add(requirementsmod.DIRSTATE_V2_REQUIREMENT) |
|
3625 | 3627 | |
|
3626 | 3628 | # experimental config: format.exp-use-copies-side-data-changeset |
@@ -1971,7 +1971,7 b' class revlog(object):' | |||
|
1971 | 1971 | raise error.RevlogError( |
|
1972 | 1972 | _(b"%s not found in the transaction") % self._indexfile |
|
1973 | 1973 | ) |
|
1974 |
trindex = |
|
|
1974 | trindex = None | |
|
1975 | 1975 | tr.add(self._datafile, 0) |
|
1976 | 1976 | |
|
1977 | 1977 | existing_handles = False |
@@ -1994,10 +1994,17 b' class revlog(object):' | |||
|
1994 | 1994 | with self._indexfp() as read_ifh: |
|
1995 | 1995 | for r in self: |
|
1996 | 1996 | new_dfh.write(self._getsegmentforrevs(r, r, df=read_ifh)[1]) |
|
1997 | if troffset <= self.start(r) + r * self.index.entry_size: | |
|
1997 | if ( | |
|
1998 | trindex is None | |
|
1999 | and troffset | |
|
2000 | <= self.start(r) + r * self.index.entry_size | |
|
2001 | ): | |
|
1998 | 2002 | trindex = r |
|
1999 | 2003 | new_dfh.flush() |
|
2000 | 2004 | |
|
2005 | if trindex is None: | |
|
2006 | trindex = 0 | |
|
2007 | ||
|
2001 | 2008 | with self.__index_new_fp() as fp: |
|
2002 | 2009 | self._format_flags &= ~FLAG_INLINE_DATA |
|
2003 | 2010 | self._inline = False |
@@ -229,6 +229,10 b' class transaction(util.transactional):' | |||
|
229 | 229 | if self._journal: |
|
230 | 230 | self._abort() |
|
231 | 231 | |
|
232 | @property | |
|
233 | def finalized(self): | |
|
234 | return self._finalizecallback is None | |
|
235 | ||
|
232 | 236 | @active |
|
233 | 237 | def startgroup(self): |
|
234 | 238 | """delay registration of file entry |
@@ -1,3 +1,25 b'' | |||
|
1 | = Mercurial 6.0.2 = | |
|
2 | ||
|
3 | * Fix `hg incoming` and `hg outgoing` with remote subrepos on Windows | |
|
4 | * Fix Rust build on MacOS | |
|
5 | * Fix a (15 year old?) bug where some data loss could happen in a very tight race window (f38ae2d7390e + ccd9cb73125c) | |
|
6 | * Remove support for running `hg unamend` on merge changesets at it was never actually implemented | |
|
7 | * Fix stream-clone requirements filtering which caused some stream-clones to be unusable from an older version of Mercurial | |
|
8 | * 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. | |
|
9 | * Fix a bug where the branchmap could point to uncommitted data | |
|
10 | ||
|
11 | = Mercurial 6.0.1 = | |
|
12 | ||
|
13 | * Improve documentation around Rust (see hg help rust) and rust-related actions | |
|
14 | * Improve upgrade/downgrade edge cases for dirstate-v2 | |
|
15 | * Make the test suite nicer to big-endian platforms | |
|
16 | * Make the test suite nicer to NetBSD | |
|
17 | * Fix a performance regression on fsmonitor (issue6612) | |
|
18 | * Add fixes for Python 3.10 | |
|
19 | * Fix a deadlock when using sparse and share-safe together | |
|
20 | ||
|
21 | = Mercurial 6.0 = | |
|
22 | ||
|
1 | 23 | == New Features == |
|
2 | 24 | * `debugrebuildfncache` now has an option to rebuild only the index files |
|
3 | 25 | * a new `bookmarks.mode` path option have been introduced to control the |
@@ -6,7 +6,7 b' Create a repository:' | |||
|
6 | 6 | devel.all-warnings=true |
|
7 | 7 | devel.default-date=0 0 |
|
8 | 8 | extensions.fsmonitor= (fsmonitor !) |
|
9 |
format.e |
|
|
9 | format.use-dirstate-v2=1 (dirstate-v2 !) | |
|
10 | 10 | largefiles.usercache=$TESTTMP/.cache/largefiles |
|
11 | 11 | lfs.usercache=$TESTTMP/.cache/lfs |
|
12 | 12 | ui.slash=True |
@@ -1242,3 +1242,99 b' Intermediary parents are on different br' | |||
|
1242 | 1242 | C 3:4a546028fa8f (inactive) |
|
1243 | 1243 | B 1:0bc7d348d965 (inactive) |
|
1244 | 1244 | $ cd .. |
|
1245 | ||
|
1246 | Check that the cache are not written too early | |
|
1247 | ---------------------------------------------- | |
|
1248 | ||
|
1249 | $ hg log -R branchmap-testing1 -G | |
|
1250 | o changeset: 3:71ca9a6d524e | |
|
1251 | |\ branch: A | |
|
1252 | | | tag: tip | |
|
1253 | | | parent: 2:a3b807b3ff0b | |
|
1254 | | | parent: 1:99ba08759bc7 | |
|
1255 | | | user: debugbuilddag | |
|
1256 | | | date: Thu Jan 01 00:00:03 1970 +0000 | |
|
1257 | | | summary: r3 | |
|
1258 | | | | |
|
1259 | | o changeset: 2:a3b807b3ff0b | |
|
1260 | | | branch: A | |
|
1261 | | | parent: 0:2ab8003a1750 | |
|
1262 | | | user: debugbuilddag | |
|
1263 | | | date: Thu Jan 01 00:00:02 1970 +0000 | |
|
1264 | | | summary: r2 | |
|
1265 | | | | |
|
1266 | o | changeset: 1:99ba08759bc7 | |
|
1267 | |/ branch: A | |
|
1268 | | tag: p1 | |
|
1269 | | user: debugbuilddag | |
|
1270 | | date: Thu Jan 01 00:00:01 1970 +0000 | |
|
1271 | | summary: r1 | |
|
1272 | | | |
|
1273 | o changeset: 0:2ab8003a1750 | |
|
1274 | branch: A | |
|
1275 | tag: base | |
|
1276 | user: debugbuilddag | |
|
1277 | date: Thu Jan 01 00:00:00 1970 +0000 | |
|
1278 | summary: r0 | |
|
1279 | ||
|
1280 | $ hg bundle -R branchmap-testing1 --base 1 bundle.hg --rev 'head()' | |
|
1281 | 2 changesets found | |
|
1282 | ||
|
1283 | Unbundling revision should warm the served cache | |
|
1284 | ||
|
1285 | $ hg clone branchmap-testing1 --rev 1 branchmap-update-01 | |
|
1286 | adding changesets | |
|
1287 | adding manifests | |
|
1288 | adding file changes | |
|
1289 | added 2 changesets with 0 changes to 0 files | |
|
1290 | new changesets 2ab8003a1750:99ba08759bc7 | |
|
1291 | updating to branch A | |
|
1292 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
|
1293 | $ cat branchmap-update-01/.hg/cache/branch2-served | |
|
1294 | 99ba08759bc7f6fdbe5304e83d0387f35c082479 1 | |
|
1295 | 99ba08759bc7f6fdbe5304e83d0387f35c082479 o A | |
|
1296 | $ hg -R branchmap-update-01 unbundle bundle.hg | |
|
1297 | adding changesets | |
|
1298 | adding manifests | |
|
1299 | adding file changes | |
|
1300 | added 2 changesets with 0 changes to 0 files | |
|
1301 | new changesets a3b807b3ff0b:71ca9a6d524e (2 drafts) | |
|
1302 | (run 'hg update' to get a working copy) | |
|
1303 | $ cat branchmap-update-01/.hg/cache/branch2-served | |
|
1304 | 71ca9a6d524ed3c2a215119b2086ac3b8c4c8286 3 | |
|
1305 | 71ca9a6d524ed3c2a215119b2086ac3b8c4c8286 o A | |
|
1306 | ||
|
1307 | aborted Unbundle should not update the on disk cache | |
|
1308 | ||
|
1309 | $ cat >> simplehook.py << EOF | |
|
1310 | > import sys | |
|
1311 | > from mercurial import node | |
|
1312 | > from mercurial import branchmap | |
|
1313 | > def hook(ui, repo, *args, **kwargs): | |
|
1314 | > s = repo.filtered(b"served") | |
|
1315 | > s.branchmap() | |
|
1316 | > return 1 | |
|
1317 | > EOF | |
|
1318 | $ hg clone branchmap-testing1 --rev 1 branchmap-update-02 | |
|
1319 | adding changesets | |
|
1320 | adding manifests | |
|
1321 | adding file changes | |
|
1322 | added 2 changesets with 0 changes to 0 files | |
|
1323 | new changesets 2ab8003a1750:99ba08759bc7 | |
|
1324 | updating to branch A | |
|
1325 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |
|
1326 | ||
|
1327 | $ cat branchmap-update-02/.hg/cache/branch2-served | |
|
1328 | 99ba08759bc7f6fdbe5304e83d0387f35c082479 1 | |
|
1329 | 99ba08759bc7f6fdbe5304e83d0387f35c082479 o A | |
|
1330 | $ hg -R branchmap-update-02 unbundle bundle.hg --config "hooks.pretxnclose=python:$TESTTMP/simplehook.py:hook" | |
|
1331 | adding changesets | |
|
1332 | adding manifests | |
|
1333 | adding file changes | |
|
1334 | transaction abort! | |
|
1335 | rollback completed | |
|
1336 | abort: pretxnclose hook failed | |
|
1337 | [40] | |
|
1338 | $ cat branchmap-update-02/.hg/cache/branch2-served | |
|
1339 | 99ba08759bc7f6fdbe5304e83d0387f35c082479 1 | |
|
1340 | 99ba08759bc7f6fdbe5304e83d0387f35c082479 o A |
@@ -218,7 +218,7 b' check that local configs for the cached ' | |||
|
218 | 218 | devel.all-warnings=true |
|
219 | 219 | devel.default-date=0 0 |
|
220 | 220 | extensions.fsmonitor= (fsmonitor !) |
|
221 |
format.e |
|
|
221 | format.use-dirstate-v2=1 (dirstate-v2 !) | |
|
222 | 222 | largefiles.usercache=$TESTTMP/.cache/largefiles |
|
223 | 223 | lfs.usercache=$TESTTMP/.cache/lfs |
|
224 | 224 | ui.slash=True |
@@ -3,7 +3,7 b'' | |||
|
3 | 3 | #if dirstate-v2 |
|
4 | 4 | $ cat >> $HGRCPATH << EOF |
|
5 | 5 | > [format] |
|
6 |
> e |
|
|
6 | > use-dirstate-v2=1 | |
|
7 | 7 | > [storage] |
|
8 | 8 | > dirstate-v2.slow-path=allow |
|
9 | 9 | > EOF |
@@ -3,7 +3,7 b'' | |||
|
3 | 3 | #if dirstate-v2 |
|
4 | 4 | $ cat >> $HGRCPATH << EOF |
|
5 | 5 | > [format] |
|
6 |
> e |
|
|
6 | > use-dirstate-v2=1 | |
|
7 | 7 | > [storage] |
|
8 | 8 | > dirstate-v2.slow-path=allow |
|
9 | 9 | > EOF |
@@ -3,7 +3,7 b'' | |||
|
3 | 3 | #if dirstate-v2 |
|
4 | 4 | $ cat >> $HGRCPATH << EOF |
|
5 | 5 | > [format] |
|
6 |
> e |
|
|
6 | > use-dirstate-v2=1 | |
|
7 | 7 | > [storage] |
|
8 | 8 | > dirstate-v2.slow-path=allow |
|
9 | 9 | > EOF |
@@ -1597,7 +1597,7 b' Separate sections from subsections' | |||
|
1597 | 1597 | |
|
1598 | 1598 | "usefncache" |
|
1599 | 1599 | |
|
1600 |
"e |
|
|
1600 | "use-dirstate-v2" | |
|
1601 | 1601 | |
|
1602 | 1602 | "use-persistent-nodemap" |
|
1603 | 1603 |
@@ -3,7 +3,7 b'' | |||
|
3 | 3 | #if dirstate-v2 |
|
4 | 4 | $ cat >> $HGRCPATH << EOF |
|
5 | 5 | > [format] |
|
6 |
> e |
|
|
6 | > use-dirstate-v2=1 | |
|
7 | 7 | > [storage] |
|
8 | 8 | > dirstate-v2.slow-path=allow |
|
9 | 9 | > EOF |
@@ -5,7 +5,7 b'' | |||
|
5 | 5 | #if dirstate-v2 |
|
6 | 6 | $ cat >> $HGRCPATH << EOF |
|
7 | 7 | > [format] |
|
8 |
> e |
|
|
8 | > use-dirstate-v2=1 | |
|
9 | 9 | > [storage] |
|
10 | 10 | > dirstate-v2.slow-path=allow |
|
11 | 11 | > EOF |
@@ -800,7 +800,7 b' downgrading' | |||
|
800 | 800 | requirements |
|
801 | 801 | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) |
|
802 | 802 | preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !) |
|
803 |
preserved: dotencode, e |
|
|
803 | preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !) | |
|
804 | 804 | removed: persistent-nodemap |
|
805 | 805 | |
|
806 | 806 | processed revlogs: |
@@ -844,7 +844,7 b' upgrading' | |||
|
844 | 844 | requirements |
|
845 | 845 | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) |
|
846 | 846 | preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !) |
|
847 |
preserved: dotencode, e |
|
|
847 | preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !) | |
|
848 | 848 | added: persistent-nodemap |
|
849 | 849 | |
|
850 | 850 | processed revlogs: |
@@ -876,7 +876,7 b' Running unrelated upgrade' | |||
|
876 | 876 | requirements |
|
877 | 877 | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) |
|
878 | 878 | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !) |
|
879 |
preserved: dotencode, e |
|
|
879 | preserved: dotencode, use-dirstate-v2, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !) | |
|
880 | 880 | |
|
881 | 881 | optimisations: re-delta-all |
|
882 | 882 |
@@ -3,7 +3,7 b'' | |||
|
3 | 3 | #if dirstate-v2 |
|
4 | 4 | $ cat >> $HGRCPATH << EOF |
|
5 | 5 | > [format] |
|
6 |
> e |
|
|
6 | > use-dirstate-v2=1 | |
|
7 | 7 | > [storage] |
|
8 | 8 | > dirstate-v2.slow-path=allow |
|
9 | 9 | > EOF |
@@ -225,7 +225,7 b' Disable zstd related tests because its n' | |||
|
225 | 225 | |
|
226 | 226 | requirements |
|
227 | 227 | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-dirstate-v2 !) |
|
228 |
preserved: dotencode, e |
|
|
228 | preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (dirstate-v2 !) | |
|
229 | 229 | added: revlog-compression-zstd |
|
230 | 230 | |
|
231 | 231 | processed revlogs: |
@@ -253,8 +253,8 b' Disable zstd related tests because its n' | |||
|
253 | 253 | requirements |
|
254 | 254 | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) |
|
255 | 255 | preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !) |
|
256 |
preserved: dotencode, e |
|
|
257 |
preserved: dotencode, e |
|
|
256 | preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd dirstate-v2 !) | |
|
257 | preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !) | |
|
258 | 258 | added: persistent-nodemap |
|
259 | 259 | |
|
260 | 260 | processed revlogs: |
@@ -360,7 +360,7 b' Upgrade' | |||
|
360 | 360 | $ hg debugupgraderepo -q |
|
361 | 361 | requirements |
|
362 | 362 | preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) |
|
363 |
preserved: dotencode, e |
|
|
363 | preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) | |
|
364 | 364 | added: share-safe |
|
365 | 365 | |
|
366 | 366 | no revlogs to process |
@@ -370,7 +370,7 b' Upgrade' | |||
|
370 | 370 | |
|
371 | 371 | requirements |
|
372 | 372 | preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) |
|
373 |
preserved: dotencode, e |
|
|
373 | preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) | |
|
374 | 374 | added: share-safe |
|
375 | 375 | |
|
376 | 376 | share-safe |
@@ -448,7 +448,7 b' Test that downgrading works too' | |||
|
448 | 448 | $ hg debugupgraderepo -q |
|
449 | 449 | requirements |
|
450 | 450 | preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) |
|
451 |
preserved: dotencode, e |
|
|
451 | preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) | |
|
452 | 452 | removed: share-safe |
|
453 | 453 | |
|
454 | 454 | no revlogs to process |
@@ -458,7 +458,7 b' Test that downgrading works too' | |||
|
458 | 458 | |
|
459 | 459 | requirements |
|
460 | 460 | preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) |
|
461 |
preserved: dotencode, e |
|
|
461 | preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) | |
|
462 | 462 | removed: share-safe |
|
463 | 463 | |
|
464 | 464 | no revlogs to process |
@@ -541,7 +541,7 b' Testing automatic upgrade of shares when' | |||
|
541 | 541 | |
|
542 | 542 | requirements |
|
543 | 543 | preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) |
|
544 |
preserved: dotencode, e |
|
|
544 | preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !) | |
|
545 | 545 | added: share-safe |
|
546 | 546 | |
|
547 | 547 | no revlogs to process |
@@ -3,7 +3,7 b'' | |||
|
3 | 3 | #if dirstate-v2 |
|
4 | 4 | $ cat >> $HGRCPATH << EOF |
|
5 | 5 | > [format] |
|
6 |
> e |
|
|
6 | > use-dirstate-v2=1 | |
|
7 | 7 | > [storage] |
|
8 | 8 | > dirstate-v2.slow-path=allow |
|
9 | 9 | > EOF |
@@ -5,7 +5,7 b'' | |||
|
5 | 5 | #if dirstate-v2 |
|
6 | 6 | $ cat >> $HGRCPATH << EOF |
|
7 | 7 | > [format] |
|
8 |
> e |
|
|
8 | > use-dirstate-v2=1 | |
|
9 | 9 | > [storage] |
|
10 | 10 | > dirstate-v2.slow-path=allow |
|
11 | 11 | > EOF |
@@ -17,22 +17,28 b' Helper extension to intercept renames.' | |||
|
17 | 17 | > extensions.wrapfunction(util.atomictempfile, 'close', close) |
|
18 | 18 | > EOF |
|
19 | 19 | |
|
20 | Test offset computation to correctly factor in the index entries themselve. | |
|
20 | Test offset computation to correctly factor in the index entries themselves. | |
|
21 | 21 | Also test that the new data size has the correct size if the transaction is aborted |
|
22 | 22 | after the index has been replaced. |
|
23 | 23 | |
|
24 | Test repo has one small, one moderate and one big change. The clone has | |
|
25 | the small and moderate change and will transition to non-inline storage when | |
|
26 | adding the big change. | |
|
24 | Test repo has commits a, b, c, D, where D is large (grows the revlog enough that it | |
|
25 | transitions to non-inline storage). The clone initially has changes a, b | |
|
26 | and will transition to non-inline storage when adding c, D. | |
|
27 | ||
|
28 | If the transaction adding c, D is rolled back, then we don't undo the revlog split, | |
|
29 | but truncate the index and the data to remove both c and D. | |
|
27 | 30 | |
|
28 | 31 | $ hg init troffset-computation --config format.revlog-compression=none |
|
29 | 32 | $ cd troffset-computation |
|
30 | 33 | $ printf '%20d' '1' > file |
|
31 |
$ hg commit -Aqm |
|
|
34 | $ hg commit -Aqma | |
|
32 | 35 | $ printf '%1024d' '1' > file |
|
33 |
$ hg commit -Aqm |
|
|
36 | $ hg commit -Aqmb | |
|
37 | $ printf '%20d' '1' > file | |
|
38 | $ hg commit -Aqmc | |
|
34 | 39 |
$ dd if=/dev/zero of=file bs=1k count=128 > /dev/null 2>&1 |
|
35 |
$ hg commit -Aqm |
|
|
40 | $ hg commit -AqmD | |
|
41 | ||
|
36 | 42 | $ cd .. |
|
37 | 43 | |
|
38 | 44 | $ hg clone -r 1 troffset-computation troffset-computation-copy --config format.revlog-compression=none -q |
@@ -59,7 +65,7 b' Reference size:' | |||
|
59 | 65 | $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file | tail -1 |
|
60 | 66 | data/file.i 128 |
|
61 | 67 | |
|
62 | The first file.i entry should match the size above. | |
|
68 | The first file.i entry should match the "Reference size" above. | |
|
63 | 69 | The first file.d entry is the temporary record during the split, |
|
64 | 70 | the second entry after the split happened. The sum of the second file.d |
|
65 | 71 | and the second file.i entry should match the first file.i entry. |
@@ -76,11 +82,11 b' and the second file.i entry should match' | |||
|
76 | 82 | .hg/store/data/file.d: size=1046 |
|
77 | 83 | .hg/store/data/file.i: size=128 |
|
78 | 84 | $ hg tip |
|
79 |
changeset: 1: |
|
|
85 | changeset: 1:cfa8d6e60429 | |
|
80 | 86 | tag: tip |
|
81 | 87 | user: test |
|
82 | 88 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
83 |
summary: |
|
|
89 | summary: b | |
|
84 | 90 | |
|
85 | 91 | $ hg verify -q |
|
86 | 92 | warning: revlog 'data/file.d' not in fncache! |
@@ -126,11 +132,11 b' where the data file is left as garbage.' | |||
|
126 | 132 | .hg/store/data/file.d: size=1046 |
|
127 | 133 | .hg/store/data/file.i: size=1174 |
|
128 | 134 | $ hg tip |
|
129 |
changeset: 1: |
|
|
135 | changeset: 1:cfa8d6e60429 | |
|
130 | 136 | tag: tip |
|
131 | 137 | user: test |
|
132 | 138 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
133 |
summary: |
|
|
139 | summary: b | |
|
134 | 140 | |
|
135 | 141 | $ hg verify -q |
|
136 | 142 | $ cd .. |
@@ -158,11 +164,11 b' Repeat the original test but let hg roll' | |||
|
158 | 164 | .hg/store/data/file.d: size=1046 |
|
159 | 165 | .hg/store/data/file.i: size=128 |
|
160 | 166 | $ hg tip |
|
161 |
changeset: 1: |
|
|
167 | changeset: 1:cfa8d6e60429 | |
|
162 | 168 | tag: tip |
|
163 | 169 | user: test |
|
164 | 170 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
165 |
summary: |
|
|
171 | summary: b | |
|
166 | 172 | |
|
167 | 173 | $ hg verify -q |
|
168 | 174 | warning: revlog 'data/file.d' not in fncache! |
@@ -421,3 +421,27 b' Rename a->b, then amend b->c, and workin' | |||
|
421 | 421 | A d |
|
422 | 422 | b |
|
423 | 423 | R b |
|
424 | ||
|
425 | Try to unamend a merge | |
|
426 | ||
|
427 | $ cd .. | |
|
428 | $ hg init merge | |
|
429 | $ cd merge | |
|
430 | $ echo initial > initial | |
|
431 | $ hg ci -Aqm initial | |
|
432 | $ echo left > left | |
|
433 | $ hg ci -Aqm left | |
|
434 | $ hg co -q 0 | |
|
435 | $ echo right > right | |
|
436 | $ hg ci -Aqm right | |
|
437 | $ hg merge -q 1 | |
|
438 | $ hg ci -m merge | |
|
439 | $ echo accidental > initial | |
|
440 | $ hg st --rev 1 --rev . | |
|
441 | A right | |
|
442 | $ hg st --rev 2 --rev . | |
|
443 | A left | |
|
444 | $ hg amend | |
|
445 | $ hg unamend | |
|
446 | abort: cannot unamend merge changeset | |
|
447 | [10] |
@@ -1713,9 +1713,9 b' Demonstrate that nothing to perform upgr' | |||
|
1713 | 1713 | |
|
1714 | 1714 | Upgrade to dirstate-v2 |
|
1715 | 1715 | |
|
1716 |
$ hg debugformat -v --config format.e |
|
|
1716 | $ hg debugformat -v --config format.use-dirstate-v2=1 | grep dirstate-v2 | |
|
1717 | 1717 | dirstate-v2: no yes no |
|
1718 |
$ hg debugupgraderepo --config format.e |
|
|
1718 | $ hg debugupgraderepo --config format.use-dirstate-v2=1 --run | |
|
1719 | 1719 | upgrade will perform the following actions: |
|
1720 | 1720 | |
|
1721 | 1721 | requirements |
@@ -1769,14 +1769,14 b' Downgrade from dirstate-v2' | |||
|
1769 | 1769 | dirstate-v2: upgrade and downgrade from and empty repository: |
|
1770 | 1770 | ------------------------------------------------------------- |
|
1771 | 1771 | |
|
1772 |
$ hg init --config format.e |
|
|
1772 | $ hg init --config format.use-dirstate-v2=no dirstate-v2-empty | |
|
1773 | 1773 | $ cd dirstate-v2-empty |
|
1774 | 1774 | $ hg debugformat | grep dirstate-v2 |
|
1775 | 1775 | dirstate-v2: no |
|
1776 | 1776 | |
|
1777 | 1777 | upgrade |
|
1778 | 1778 | |
|
1779 |
$ hg debugupgraderepo --run --config format.e |
|
|
1779 | $ hg debugupgraderepo --run --config format.use-dirstate-v2=yes | |
|
1780 | 1780 | upgrade will perform the following actions: |
|
1781 | 1781 | |
|
1782 | 1782 | requirements |
@@ -1800,7 +1800,7 b' upgrade' | |||
|
1800 | 1800 | |
|
1801 | 1801 | downgrade |
|
1802 | 1802 | |
|
1803 |
$ hg debugupgraderepo --run --config format.e |
|
|
1803 | $ hg debugupgraderepo --run --config format.use-dirstate-v2=no | |
|
1804 | 1804 | upgrade will perform the following actions: |
|
1805 | 1805 | |
|
1806 | 1806 | requirements |
General Comments 0
You need to be logged in to leave comments.
Login now