Show More
@@ -221,3 +221,4 b' 6ee0244fc1cf889ae543d2ce0ec45201ae0be6e1' | |||||
221 | a44bb185f6bdbecc754996d8386722e2f0123b0a 0 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 | |
|
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 | a44bb185f6bdbecc754996d8386722e2f0123b0a 6.0rc0 |
|
234 | a44bb185f6bdbecc754996d8386722e2f0123b0a 6.0rc0 | |
235 | 5d08b289e2e526259d7d5ea32b70fe76d5b327d7 6.0 |
|
235 | 5d08b289e2e526259d7d5ea32b70fe76d5b327d7 6.0 | |
236 | 799fdf4cca80cb9ae40537a90995e6bd163ebc0b 6.0.1 |
|
236 | 799fdf4cca80cb9ae40537a90995e6bd163ebc0b 6.0.1 | |
|
237 | 75676122c2bf7594ac732b7388db4c74c648b365 6.0.2 |
@@ -273,6 +273,8 b' def unamend(ui, repo, **opts):' | |||||
273 | curctx = repo[b'.'] |
|
273 | curctx = repo[b'.'] | |
274 |
|
274 | |||
275 | rewriteutil.precheck(repo, [curctx.rev()], b'unamend') |
|
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 | # identify the commit to which to unamend |
|
279 | # identify the commit to which to unamend | |
278 | markers = list(predecessormarkers(curctx)) |
|
280 | markers = list(predecessormarkers(curctx)) |
@@ -149,6 +149,13 b' class BranchMapCache(object):' | |||||
149 | def clear(self): |
|
149 | def clear(self): | |
150 | self._per_filter.clear() |
|
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 | def _unknownnode(node): |
|
160 | def _unknownnode(node): | |
154 | """raises ValueError when branchcache found a node which does not exists""" |
|
161 | """raises ValueError when branchcache found a node which does not exists""" | |
@@ -199,6 +206,7 b' class branchcache(object):' | |||||
199 | has a given node or not. If it's not provided, we assume that every node |
|
206 | has a given node or not. If it's not provided, we assume that every node | |
200 | we have exists in changelog""" |
|
207 | we have exists in changelog""" | |
201 | self._repo = repo |
|
208 | self._repo = repo | |
|
209 | self._delayed = False | |||
202 | if tipnode is None: |
|
210 | if tipnode is None: | |
203 | self.tipnode = repo.nullid |
|
211 | self.tipnode = repo.nullid | |
204 | else: |
|
212 | else: | |
@@ -403,6 +411,13 b' class branchcache(object):' | |||||
403 | ) |
|
411 | ) | |
404 |
|
412 | |||
405 | def write(self, repo): |
|
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 | try: |
|
421 | try: | |
407 | f = repo.cachevfs(self._filename(repo), b"w", atomictemp=True) |
|
422 | f = repo.cachevfs(self._filename(repo), b"w", atomictemp=True) | |
408 | cachekey = [hex(self.tipnode), b'%d' % self.tiprev] |
|
423 | cachekey = [hex(self.tipnode), b'%d' % self.tiprev] | |
@@ -427,6 +442,7 b' class branchcache(object):' | |||||
427 | len(self._entries), |
|
442 | len(self._entries), | |
428 | nodecount, |
|
443 | nodecount, | |
429 | ) |
|
444 | ) | |
|
445 | self._delayed = False | |||
430 | except (IOError, OSError, error.Abort) as inst: |
|
446 | except (IOError, OSError, error.Abort) as inst: | |
431 | # Abort may be raised by read only opener, so log and continue |
|
447 | # Abort may be raised by read only opener, so log and continue | |
432 | repo.ui.debug( |
|
448 | repo.ui.debug( |
@@ -1277,9 +1277,10 b' coreconfigitem(' | |||||
1277 | # Enable this dirstate format *when creating a new repository*. |
|
1277 | # Enable this dirstate format *when creating a new repository*. | |
1278 | # Which format to use for existing repos is controlled by .hg/requires |
|
1278 | # Which format to use for existing repos is controlled by .hg/requires | |
1279 | b'format', |
|
1279 | b'format', | |
1280 |
b'e |
|
1280 | b'use-dirstate-v2', | |
1281 | default=False, |
|
1281 | default=False, | |
1282 | experimental=True, |
|
1282 | experimental=True, | |
|
1283 | alias=[(b'format', b'exp-rc-dirstate-v2')], | |||
1283 | ) |
|
1284 | ) | |
1284 | coreconfigitem( |
|
1285 | coreconfigitem( | |
1285 | b'format', |
|
1286 | b'format', | |
@@ -1851,7 +1852,7 b' coreconfigitem(' | |||||
1851 | default=b'skip', |
|
1852 | default=b'skip', | |
1852 | experimental=True, |
|
1853 | experimental=True, | |
1853 | ) |
|
1854 | ) | |
1854 |
# experimental as long as format.e |
|
1855 | # experimental as long as format.use-dirstate-v2 is. | |
1855 | coreconfigitem( |
|
1856 | coreconfigitem( | |
1856 | b'storage', |
|
1857 | b'storage', | |
1857 | b'dirstate-v2.slow-path', |
|
1858 | b'dirstate-v2.slow-path', |
@@ -915,7 +915,7 b' https://www.mercurial-scm.org/wiki/Missi' | |||||
915 |
|
915 | |||
916 | Enabled by default. |
|
916 | Enabled by default. | |
917 |
|
917 | |||
918 |
``e |
|
918 | ``use-dirstate-v2`` | |
919 | Enable or disable the experimental "dirstate-v2" feature. The dirstate |
|
919 | Enable or disable the experimental "dirstate-v2" feature. The dirstate | |
920 | functionality is shared by all commands interacting with the working copy. |
|
920 | functionality is shared by all commands interacting with the working copy. | |
921 | The new version is more robust, faster and stores more information. |
|
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 | $ hg debugupgraderepo \ |
|
940 | $ hg debugupgraderepo \ | |
941 | --run \ |
|
941 | --run \ | |
942 |
--config format.e |
|
942 | --config format.use-dirstate-v2=False \ | |
943 | --config storage.dirstate-v2.slow-path=allow |
|
943 | --config storage.dirstate-v2.slow-path=allow | |
944 |
|
944 | |||
945 | For a more comprehensive guide, see :hg:`help internals.dirstate-v2`. |
|
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 | When creating a new local repository such as with `hg init` or `hg clone`, |
|
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 | controls whether to use this file format. |
|
41 | controls whether to use this file format. | |
42 | This is disabled by default as of this writing. |
|
42 | This is disabled by default as of this writing. | |
43 | To enable it for a single repository, run for example:: |
|
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 | Checking the format of an existing local repository |
|
47 | Checking the format of an existing local repository | |
48 | -------------------------------------------------- |
|
48 | -------------------------------------------------- | |
@@ -63,15 +63,15 b' Upgrading or downgrading an existing loc' | |||||
63 | The `debugupgrade` command does various upgrades or downgrades |
|
63 | The `debugupgrade` command does various upgrades or downgrades | |
64 | on a local repository |
|
64 | on a local repository | |
65 | based on the current Mercurial version and on configuration. |
|
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 | Example to upgrade:: |
|
68 | Example to upgrade:: | |
69 |
|
69 | |||
70 |
$ hg debugupgrade --config format.e |
|
70 | $ hg debugupgrade --config format.use-dirstate-v2=1 | |
71 |
|
71 | |||
72 | Example to downgrade to `dirstate-v1`:: |
|
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 | Both of this commands do nothing but print a list of proposed changes, |
|
76 | Both of this commands do nothing but print a list of proposed changes, | |
77 | which may include changes unrelated to the dirstate. |
|
77 | which may include changes unrelated to the dirstate. |
@@ -15,10 +15,11 b' Features' | |||||
15 | ======== |
|
15 | ======== | |
16 |
|
16 | |||
17 | The following operations are sped up when using Rust: |
|
17 | The following operations are sped up when using Rust: | |
|
18 | ||||
18 | - discovery of differences between repositories (pull/push) |
|
19 | - discovery of differences between repositories (pull/push) | |
19 | - nodemap (see :hg:`help config.format.use-persistent-nodemap`) |
|
20 | - nodemap (see :hg:`help config.format.use-persistent-nodemap`) | |
20 | - all commands using the dirstate (status, commit, diff, add, update, etc.) |
|
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 | - iteration over ancestors in a graph |
|
23 | - iteration over ancestors in a graph | |
23 |
|
24 | |||
24 | More features are in the works, and improvements on the above listed are still |
|
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 | b"fast implementation." |
|
1190 | b"fast implementation." | |
1191 | ) |
|
1191 | ) | |
1192 | hint = _( |
|
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 | if not dirstate.HAS_FAST_DIRSTATE_V2: |
|
1195 | if not dirstate.HAS_FAST_DIRSTATE_V2: | |
1196 | if slow_path == b'warn': |
|
1196 | if slow_path == b'warn': | |
@@ -2824,6 +2824,8 b' class localrepository(object):' | |||||
2824 | self.ui.debug(b'updating the branch cache\n') |
|
2824 | self.ui.debug(b'updating the branch cache\n') | |
2825 | self.filtered(b'served').branchmap() |
|
2825 | self.filtered(b'served').branchmap() | |
2826 | self.filtered(b'served.hidden').branchmap() |
|
2826 | self.filtered(b'served.hidden').branchmap() | |
|
2827 | # flush all possibly delayed write. | |||
|
2828 | self._branchcaches.write_delayed(self) | |||
2827 |
|
2829 | |||
2828 | if repository.CACHE_CHANGELOG_CACHE in caches: |
|
2830 | if repository.CACHE_CHANGELOG_CACHE in caches: | |
2829 | self.changelog.update_caches(transaction=tr) |
|
2831 | self.changelog.update_caches(transaction=tr) | |
@@ -3618,9 +3620,9 b' def newreporequirements(ui, createopts):' | |||||
3618 | if ui.configbool(b'format', b'sparse-revlog'): |
|
3620 | if ui.configbool(b'format', b'sparse-revlog'): | |
3619 | requirements.add(requirementsmod.SPARSEREVLOG_REQUIREMENT) |
|
3621 | requirements.add(requirementsmod.SPARSEREVLOG_REQUIREMENT) | |
3620 |
|
3622 | |||
3621 |
# experimental config: format.e |
|
3623 | # experimental config: format.use-dirstate-v2 | |
3622 | # Keep this logic in sync with `has_dirstate_v2()` in `tests/hghave.py` |
|
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 | requirements.add(requirementsmod.DIRSTATE_V2_REQUIREMENT) |
|
3626 | requirements.add(requirementsmod.DIRSTATE_V2_REQUIREMENT) | |
3625 |
|
3627 | |||
3626 | # experimental config: format.exp-use-copies-side-data-changeset |
|
3628 | # experimental config: format.exp-use-copies-side-data-changeset |
@@ -1971,7 +1971,7 b' class revlog(object):' | |||||
1971 | raise error.RevlogError( |
|
1971 | raise error.RevlogError( | |
1972 | _(b"%s not found in the transaction") % self._indexfile |
|
1972 | _(b"%s not found in the transaction") % self._indexfile | |
1973 | ) |
|
1973 | ) | |
1974 |
trindex = |
|
1974 | trindex = None | |
1975 | tr.add(self._datafile, 0) |
|
1975 | tr.add(self._datafile, 0) | |
1976 |
|
1976 | |||
1977 | existing_handles = False |
|
1977 | existing_handles = False | |
@@ -1994,10 +1994,17 b' class revlog(object):' | |||||
1994 | with self._indexfp() as read_ifh: |
|
1994 | with self._indexfp() as read_ifh: | |
1995 | for r in self: |
|
1995 | for r in self: | |
1996 | new_dfh.write(self._getsegmentforrevs(r, r, df=read_ifh)[1]) |
|
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 | trindex = r |
|
2002 | trindex = r | |
1999 | new_dfh.flush() |
|
2003 | new_dfh.flush() | |
2000 |
|
2004 | |||
|
2005 | if trindex is None: | |||
|
2006 | trindex = 0 | |||
|
2007 | ||||
2001 | with self.__index_new_fp() as fp: |
|
2008 | with self.__index_new_fp() as fp: | |
2002 | self._format_flags &= ~FLAG_INLINE_DATA |
|
2009 | self._format_flags &= ~FLAG_INLINE_DATA | |
2003 | self._inline = False |
|
2010 | self._inline = False |
@@ -229,6 +229,10 b' class transaction(util.transactional):' | |||||
229 | if self._journal: |
|
229 | if self._journal: | |
230 | self._abort() |
|
230 | self._abort() | |
231 |
|
231 | |||
|
232 | @property | |||
|
233 | def finalized(self): | |||
|
234 | return self._finalizecallback is None | |||
|
235 | ||||
232 | @active |
|
236 | @active | |
233 | def startgroup(self): |
|
237 | def startgroup(self): | |
234 | """delay registration of file entry |
|
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 | == New Features == |
|
23 | == New Features == | |
2 | * `debugrebuildfncache` now has an option to rebuild only the index files |
|
24 | * `debugrebuildfncache` now has an option to rebuild only the index files | |
3 | * a new `bookmarks.mode` path option have been introduced to control the |
|
25 | * a new `bookmarks.mode` path option have been introduced to control the |
@@ -6,7 +6,7 b' Create a repository:' | |||||
6 | devel.all-warnings=true |
|
6 | devel.all-warnings=true | |
7 | devel.default-date=0 0 |
|
7 | devel.default-date=0 0 | |
8 | extensions.fsmonitor= (fsmonitor !) |
|
8 | extensions.fsmonitor= (fsmonitor !) | |
9 |
format.e |
|
9 | format.use-dirstate-v2=1 (dirstate-v2 !) | |
10 | largefiles.usercache=$TESTTMP/.cache/largefiles |
|
10 | largefiles.usercache=$TESTTMP/.cache/largefiles | |
11 | lfs.usercache=$TESTTMP/.cache/lfs |
|
11 | lfs.usercache=$TESTTMP/.cache/lfs | |
12 | ui.slash=True |
|
12 | ui.slash=True |
@@ -1242,3 +1242,99 b' Intermediary parents are on different br' | |||||
1242 | C 3:4a546028fa8f (inactive) |
|
1242 | C 3:4a546028fa8f (inactive) | |
1243 | B 1:0bc7d348d965 (inactive) |
|
1243 | B 1:0bc7d348d965 (inactive) | |
1244 | $ cd .. |
|
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 | devel.all-warnings=true |
|
218 | devel.all-warnings=true | |
219 | devel.default-date=0 0 |
|
219 | devel.default-date=0 0 | |
220 | extensions.fsmonitor= (fsmonitor !) |
|
220 | extensions.fsmonitor= (fsmonitor !) | |
221 |
format.e |
|
221 | format.use-dirstate-v2=1 (dirstate-v2 !) | |
222 | largefiles.usercache=$TESTTMP/.cache/largefiles |
|
222 | largefiles.usercache=$TESTTMP/.cache/largefiles | |
223 | lfs.usercache=$TESTTMP/.cache/lfs |
|
223 | lfs.usercache=$TESTTMP/.cache/lfs | |
224 | ui.slash=True |
|
224 | ui.slash=True |
@@ -3,7 +3,7 b'' | |||||
3 | #if dirstate-v2 |
|
3 | #if dirstate-v2 | |
4 | $ cat >> $HGRCPATH << EOF |
|
4 | $ cat >> $HGRCPATH << EOF | |
5 | > [format] |
|
5 | > [format] | |
6 |
> e |
|
6 | > use-dirstate-v2=1 | |
7 | > [storage] |
|
7 | > [storage] | |
8 | > dirstate-v2.slow-path=allow |
|
8 | > dirstate-v2.slow-path=allow | |
9 | > EOF |
|
9 | > EOF |
@@ -3,7 +3,7 b'' | |||||
3 | #if dirstate-v2 |
|
3 | #if dirstate-v2 | |
4 | $ cat >> $HGRCPATH << EOF |
|
4 | $ cat >> $HGRCPATH << EOF | |
5 | > [format] |
|
5 | > [format] | |
6 |
> e |
|
6 | > use-dirstate-v2=1 | |
7 | > [storage] |
|
7 | > [storage] | |
8 | > dirstate-v2.slow-path=allow |
|
8 | > dirstate-v2.slow-path=allow | |
9 | > EOF |
|
9 | > EOF |
@@ -3,7 +3,7 b'' | |||||
3 | #if dirstate-v2 |
|
3 | #if dirstate-v2 | |
4 | $ cat >> $HGRCPATH << EOF |
|
4 | $ cat >> $HGRCPATH << EOF | |
5 | > [format] |
|
5 | > [format] | |
6 |
> e |
|
6 | > use-dirstate-v2=1 | |
7 | > [storage] |
|
7 | > [storage] | |
8 | > dirstate-v2.slow-path=allow |
|
8 | > dirstate-v2.slow-path=allow | |
9 | > EOF |
|
9 | > EOF |
@@ -1597,7 +1597,7 b' Separate sections from subsections' | |||||
1597 |
|
1597 | |||
1598 | "usefncache" |
|
1598 | "usefncache" | |
1599 |
|
1599 | |||
1600 |
"e |
|
1600 | "use-dirstate-v2" | |
1601 |
|
1601 | |||
1602 | "use-persistent-nodemap" |
|
1602 | "use-persistent-nodemap" | |
1603 |
|
1603 |
@@ -3,7 +3,7 b'' | |||||
3 | #if dirstate-v2 |
|
3 | #if dirstate-v2 | |
4 | $ cat >> $HGRCPATH << EOF |
|
4 | $ cat >> $HGRCPATH << EOF | |
5 | > [format] |
|
5 | > [format] | |
6 |
> e |
|
6 | > use-dirstate-v2=1 | |
7 | > [storage] |
|
7 | > [storage] | |
8 | > dirstate-v2.slow-path=allow |
|
8 | > dirstate-v2.slow-path=allow | |
9 | > EOF |
|
9 | > EOF |
@@ -5,7 +5,7 b'' | |||||
5 | #if dirstate-v2 |
|
5 | #if dirstate-v2 | |
6 | $ cat >> $HGRCPATH << EOF |
|
6 | $ cat >> $HGRCPATH << EOF | |
7 | > [format] |
|
7 | > [format] | |
8 |
> e |
|
8 | > use-dirstate-v2=1 | |
9 | > [storage] |
|
9 | > [storage] | |
10 | > dirstate-v2.slow-path=allow |
|
10 | > dirstate-v2.slow-path=allow | |
11 | > EOF |
|
11 | > EOF |
@@ -800,7 +800,7 b' downgrading' | |||||
800 | requirements |
|
800 | requirements | |
801 | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) |
|
801 | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) | |
802 | preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !) |
|
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 | removed: persistent-nodemap |
|
804 | removed: persistent-nodemap | |
805 |
|
805 | |||
806 | processed revlogs: |
|
806 | processed revlogs: | |
@@ -844,7 +844,7 b' upgrading' | |||||
844 | requirements |
|
844 | requirements | |
845 | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) |
|
845 | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) | |
846 | preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !) |
|
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 | added: persistent-nodemap |
|
848 | added: persistent-nodemap | |
849 |
|
849 | |||
850 | processed revlogs: |
|
850 | processed revlogs: | |
@@ -876,7 +876,7 b' Running unrelated upgrade' | |||||
876 | requirements |
|
876 | requirements | |
877 | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) |
|
877 | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) | |
878 | preserved: dotencode, fncache, generaldelta, persistent-nodemap, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !) |
|
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 | optimisations: re-delta-all |
|
881 | optimisations: re-delta-all | |
882 |
|
882 |
@@ -3,7 +3,7 b'' | |||||
3 | #if dirstate-v2 |
|
3 | #if dirstate-v2 | |
4 | $ cat >> $HGRCPATH << EOF |
|
4 | $ cat >> $HGRCPATH << EOF | |
5 | > [format] |
|
5 | > [format] | |
6 |
> e |
|
6 | > use-dirstate-v2=1 | |
7 | > [storage] |
|
7 | > [storage] | |
8 | > dirstate-v2.slow-path=allow |
|
8 | > dirstate-v2.slow-path=allow | |
9 | > EOF |
|
9 | > EOF |
@@ -225,7 +225,7 b' Disable zstd related tests because its n' | |||||
225 |
|
225 | |||
226 | requirements |
|
226 | requirements | |
227 | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-dirstate-v2 !) |
|
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 | added: revlog-compression-zstd |
|
229 | added: revlog-compression-zstd | |
230 |
|
230 | |||
231 | processed revlogs: |
|
231 | processed revlogs: | |
@@ -253,8 +253,8 b' Disable zstd related tests because its n' | |||||
253 | requirements |
|
253 | requirements | |
254 | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) |
|
254 | preserved: dotencode, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd no-dirstate-v2 !) | |
255 | preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !) |
|
255 | preserved: dotencode, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd no-dirstate-v2 !) | |
256 |
preserved: dotencode, e |
|
256 | preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlogv1, share-safe, sparserevlog, store (no-zstd dirstate-v2 !) | |
257 |
preserved: dotencode, e |
|
257 | preserved: dotencode, use-dirstate-v2, fncache, generaldelta, revlog-compression-zstd, revlogv1, share-safe, sparserevlog, store (zstd dirstate-v2 !) | |
258 | added: persistent-nodemap |
|
258 | added: persistent-nodemap | |
259 |
|
259 | |||
260 | processed revlogs: |
|
260 | processed revlogs: | |
@@ -360,7 +360,7 b' Upgrade' | |||||
360 | $ hg debugupgraderepo -q |
|
360 | $ hg debugupgraderepo -q | |
361 | requirements |
|
361 | requirements | |
362 | preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) |
|
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 | added: share-safe |
|
364 | added: share-safe | |
365 |
|
365 | |||
366 | no revlogs to process |
|
366 | no revlogs to process | |
@@ -370,7 +370,7 b' Upgrade' | |||||
370 |
|
370 | |||
371 | requirements |
|
371 | requirements | |
372 | preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) |
|
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 | added: share-safe |
|
374 | added: share-safe | |
375 |
|
375 | |||
376 | share-safe |
|
376 | share-safe | |
@@ -448,7 +448,7 b' Test that downgrading works too' | |||||
448 | $ hg debugupgraderepo -q |
|
448 | $ hg debugupgraderepo -q | |
449 | requirements |
|
449 | requirements | |
450 | preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) |
|
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 | removed: share-safe |
|
452 | removed: share-safe | |
453 |
|
453 | |||
454 | no revlogs to process |
|
454 | no revlogs to process | |
@@ -458,7 +458,7 b' Test that downgrading works too' | |||||
458 |
|
458 | |||
459 | requirements |
|
459 | requirements | |
460 | preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) |
|
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 | removed: share-safe |
|
462 | removed: share-safe | |
463 |
|
463 | |||
464 | no revlogs to process |
|
464 | no revlogs to process | |
@@ -541,7 +541,7 b' Testing automatic upgrade of shares when' | |||||
541 |
|
541 | |||
542 | requirements |
|
542 | requirements | |
543 | preserved: dotencode, fncache, generaldelta, revlogv1, sparserevlog, store (no-dirstate-v2 !) |
|
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 | added: share-safe |
|
545 | added: share-safe | |
546 |
|
546 | |||
547 | no revlogs to process |
|
547 | no revlogs to process |
@@ -3,7 +3,7 b'' | |||||
3 | #if dirstate-v2 |
|
3 | #if dirstate-v2 | |
4 | $ cat >> $HGRCPATH << EOF |
|
4 | $ cat >> $HGRCPATH << EOF | |
5 | > [format] |
|
5 | > [format] | |
6 |
> e |
|
6 | > use-dirstate-v2=1 | |
7 | > [storage] |
|
7 | > [storage] | |
8 | > dirstate-v2.slow-path=allow |
|
8 | > dirstate-v2.slow-path=allow | |
9 | > EOF |
|
9 | > EOF |
@@ -5,7 +5,7 b'' | |||||
5 | #if dirstate-v2 |
|
5 | #if dirstate-v2 | |
6 | $ cat >> $HGRCPATH << EOF |
|
6 | $ cat >> $HGRCPATH << EOF | |
7 | > [format] |
|
7 | > [format] | |
8 |
> e |
|
8 | > use-dirstate-v2=1 | |
9 | > [storage] |
|
9 | > [storage] | |
10 | > dirstate-v2.slow-path=allow |
|
10 | > dirstate-v2.slow-path=allow | |
11 | > EOF |
|
11 | > EOF |
@@ -17,22 +17,28 b' Helper extension to intercept renames.' | |||||
17 | > extensions.wrapfunction(util.atomictempfile, 'close', close) |
|
17 | > extensions.wrapfunction(util.atomictempfile, 'close', close) | |
18 | > EOF |
|
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 | Also test that the new data size has the correct size if the transaction is aborted |
|
21 | Also test that the new data size has the correct size if the transaction is aborted | |
22 | after the index has been replaced. |
|
22 | after the index has been replaced. | |
23 |
|
23 | |||
24 | Test repo has one small, one moderate and one big change. The clone has |
|
24 | Test repo has commits a, b, c, D, where D is large (grows the revlog enough that it | |
25 | the small and moderate change and will transition to non-inline storage when |
|
25 | transitions to non-inline storage). The clone initially has changes a, b | |
26 | adding the big change. |
|
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 | $ hg init troffset-computation --config format.revlog-compression=none |
|
31 | $ hg init troffset-computation --config format.revlog-compression=none | |
29 | $ cd troffset-computation |
|
32 | $ cd troffset-computation | |
30 | $ printf '%20d' '1' > file |
|
33 | $ printf '%20d' '1' > file | |
31 |
$ hg commit -Aqm |
|
34 | $ hg commit -Aqma | |
32 | $ printf '%1024d' '1' > file |
|
35 | $ printf '%1024d' '1' > file | |
33 |
$ hg commit -Aqm |
|
36 | $ hg commit -Aqmb | |
|
37 | $ printf '%20d' '1' > file | |||
|
38 | $ hg commit -Aqmc | |||
34 |
$ dd if=/dev/zero of=file bs=1k count=128 > /dev/null 2>&1 |
|
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 | $ cd .. |
|
42 | $ cd .. | |
37 |
|
43 | |||
38 | $ hg clone -r 1 troffset-computation troffset-computation-copy --config format.revlog-compression=none -q |
|
44 | $ hg clone -r 1 troffset-computation troffset-computation-copy --config format.revlog-compression=none -q | |
@@ -59,7 +65,7 b' Reference size:' | |||||
59 | $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file | tail -1 |
|
65 | $ cat .hg/store/journal | tr -s '\000' ' ' | grep data/file | tail -1 | |
60 | data/file.i 128 |
|
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 | The first file.d entry is the temporary record during the split, |
|
69 | The first file.d entry is the temporary record during the split, | |
64 | the second entry after the split happened. The sum of the second file.d |
|
70 | the second entry after the split happened. The sum of the second file.d | |
65 | and the second file.i entry should match the first file.i entry. |
|
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 | .hg/store/data/file.d: size=1046 |
|
82 | .hg/store/data/file.d: size=1046 | |
77 | .hg/store/data/file.i: size=128 |
|
83 | .hg/store/data/file.i: size=128 | |
78 | $ hg tip |
|
84 | $ hg tip | |
79 |
changeset: 1: |
|
85 | changeset: 1:cfa8d6e60429 | |
80 | tag: tip |
|
86 | tag: tip | |
81 | user: test |
|
87 | user: test | |
82 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
88 | date: Thu Jan 01 00:00:00 1970 +0000 | |
83 |
summary: |
|
89 | summary: b | |
84 |
|
90 | |||
85 | $ hg verify -q |
|
91 | $ hg verify -q | |
86 | warning: revlog 'data/file.d' not in fncache! |
|
92 | warning: revlog 'data/file.d' not in fncache! | |
@@ -126,11 +132,11 b' where the data file is left as garbage.' | |||||
126 | .hg/store/data/file.d: size=1046 |
|
132 | .hg/store/data/file.d: size=1046 | |
127 | .hg/store/data/file.i: size=1174 |
|
133 | .hg/store/data/file.i: size=1174 | |
128 | $ hg tip |
|
134 | $ hg tip | |
129 |
changeset: 1: |
|
135 | changeset: 1:cfa8d6e60429 | |
130 | tag: tip |
|
136 | tag: tip | |
131 | user: test |
|
137 | user: test | |
132 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
138 | date: Thu Jan 01 00:00:00 1970 +0000 | |
133 |
summary: |
|
139 | summary: b | |
134 |
|
140 | |||
135 | $ hg verify -q |
|
141 | $ hg verify -q | |
136 | $ cd .. |
|
142 | $ cd .. | |
@@ -158,11 +164,11 b' Repeat the original test but let hg roll' | |||||
158 | .hg/store/data/file.d: size=1046 |
|
164 | .hg/store/data/file.d: size=1046 | |
159 | .hg/store/data/file.i: size=128 |
|
165 | .hg/store/data/file.i: size=128 | |
160 | $ hg tip |
|
166 | $ hg tip | |
161 |
changeset: 1: |
|
167 | changeset: 1:cfa8d6e60429 | |
162 | tag: tip |
|
168 | tag: tip | |
163 | user: test |
|
169 | user: test | |
164 | date: Thu Jan 01 00:00:00 1970 +0000 |
|
170 | date: Thu Jan 01 00:00:00 1970 +0000 | |
165 |
summary: |
|
171 | summary: b | |
166 |
|
172 | |||
167 | $ hg verify -q |
|
173 | $ hg verify -q | |
168 | warning: revlog 'data/file.d' not in fncache! |
|
174 | warning: revlog 'data/file.d' not in fncache! |
@@ -421,3 +421,27 b' Rename a->b, then amend b->c, and workin' | |||||
421 | A d |
|
421 | A d | |
422 | b |
|
422 | b | |
423 | R b |
|
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 | Upgrade to dirstate-v2 |
|
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 | dirstate-v2: no yes no |
|
1717 | dirstate-v2: no yes no | |
1718 |
$ hg debugupgraderepo --config format.e |
|
1718 | $ hg debugupgraderepo --config format.use-dirstate-v2=1 --run | |
1719 | upgrade will perform the following actions: |
|
1719 | upgrade will perform the following actions: | |
1720 |
|
1720 | |||
1721 | requirements |
|
1721 | requirements | |
@@ -1769,14 +1769,14 b' Downgrade from dirstate-v2' | |||||
1769 | dirstate-v2: upgrade and downgrade from and empty repository: |
|
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 | $ cd dirstate-v2-empty |
|
1773 | $ cd dirstate-v2-empty | |
1774 | $ hg debugformat | grep dirstate-v2 |
|
1774 | $ hg debugformat | grep dirstate-v2 | |
1775 | dirstate-v2: no |
|
1775 | dirstate-v2: no | |
1776 |
|
1776 | |||
1777 | upgrade |
|
1777 | upgrade | |
1778 |
|
1778 | |||
1779 |
$ hg debugupgraderepo --run --config format.e |
|
1779 | $ hg debugupgraderepo --run --config format.use-dirstate-v2=yes | |
1780 | upgrade will perform the following actions: |
|
1780 | upgrade will perform the following actions: | |
1781 |
|
1781 | |||
1782 | requirements |
|
1782 | requirements | |
@@ -1800,7 +1800,7 b' upgrade' | |||||
1800 |
|
1800 | |||
1801 | downgrade |
|
1801 | downgrade | |
1802 |
|
1802 | |||
1803 |
$ hg debugupgraderepo --run --config format.e |
|
1803 | $ hg debugupgraderepo --run --config format.use-dirstate-v2=no | |
1804 | upgrade will perform the following actions: |
|
1804 | upgrade will perform the following actions: | |
1805 |
|
1805 | |||
1806 | requirements |
|
1806 | requirements |
General Comments 0
You need to be logged in to leave comments.
Login now