##// END OF EJS Templates
branching: merge stable into default
Raphaël Gomès -
r49530:e845537f merge default
parent child Browse files
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'exp-rc-dirstate-v2',
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.exp-rc-dirstate-v2 is.
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 ``exp-rc-dirstate-v2``
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.exp-rc-dirstate-v2=False \
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 `exp-rc-dirstate-v2` boolean in the `format` configuration section
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.exp-rc-dirstate-v2=1
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.exp-rc-dirstate-v2` configuration is used again.
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.exp-rc-dirstate-v2=1
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.exp-rc-dirstate-v2=0
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.exp-rc-dirstate-v2`)
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.exp-rc-dirstate-v2` " b"for details"
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.exp-rc-dirstate-v2
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'exp-rc-dirstate-v2'):
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 = 0
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.exp-rc-dirstate-v2=1 (dirstate-v2 !)
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.exp-rc-dirstate-v2=1 (dirstate-v2 !)
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 > exp-rc-dirstate-v2=1
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 > exp-rc-dirstate-v2=1
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 > exp-rc-dirstate-v2=1
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 "exp-rc-dirstate-v2"
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 > exp-rc-dirstate-v2=1
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 > exp-rc-dirstate-v2=1
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, exp-rc-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !)
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, exp-rc-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !)
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, exp-rc-dirstate-v2, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !)
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 > exp-rc-dirstate-v2=1
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, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (dirstate-v2 !)
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, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd dirstate-v2 !)
257 preserved: dotencode, exp-rc-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !)
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, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
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, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
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, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
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, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
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, exp-rc-dirstate-v2, fncache, generaldelta, revlogv1, sparserevlog, store (dirstate-v2 !)
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 > exp-rc-dirstate-v2=1
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 > exp-rc-dirstate-v2=1
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:3ce491143aec
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:3ce491143aec
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:3ce491143aec
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.exp-rc-dirstate-v2=1 | grep dirstate-v2
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.exp-rc-dirstate-v2=1 --run
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.exp-rc-dirstate-v2=no dirstate-v2-empty
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.exp-rc-dirstate-v2=yes
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.exp-rc-dirstate-v2=no
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