Mercurial > public > mercurial-scm > hg-stable
annotate mercurial/upgrade_utils/actions.py @ 48295:bf11ff22a9af
dirstate-v2: freeze the on-disk format
It seems the format as reached a good balance. With a core of new capabilities
that motivated it initially and enough new feature and room for future
improvement to be a clear progress we can set a milestone for.
Having the format frozen will help the feature to get real life testing, outside
of the test suite.
The feature itself stay experimental but the config gains a new name to avoid
people enable non-frozen version by default.
If too many bugs are reported during the RC we might move the format back to
experimental and drop its support in future version (in favor of a new one)
Differential Revision: https://phab.mercurial-scm.org/D11709
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 20 Oct 2021 00:57:02 +0200 |
parents | 4259a72fe528 |
children | 7ee07e1a25c0 |
rev | line source |
---|---|
31894
9379689b6c10
upgrade: update the header comment
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31893
diff
changeset
|
1 # upgrade.py - functions for in place upgrade of Mercurial repository |
4702
18e91c9def0c
strip: move strip code to a new repair module
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
2 # |
31895
783b4c9bd5f5
upgrade: update the copyright statement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31894
diff
changeset
|
3 # Copyright (c) 2016-present, Gregory Szorc |
4702
18e91c9def0c
strip: move strip code to a new repair module
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
4 # |
8225
46293a0c7e9f
updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents:
8073
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
10263 | 6 # GNU General Public License version 2 or any later version. |
4702
18e91c9def0c
strip: move strip code to a new repair module
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
7 |
25970
d1419cfbd4f4
repair: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25874
diff
changeset
|
8 from __future__ import absolute_import |
d1419cfbd4f4
repair: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25874
diff
changeset
|
9 |
46051
4b89cf08d8dc
upgrade: split definition and management of the actions from the main code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46050
diff
changeset
|
10 from ..i18n import _ |
4b89cf08d8dc
upgrade: split definition and management of the actions from the main code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46050
diff
changeset
|
11 from .. import ( |
46052
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
12 error, |
31893
165428b05fca
upgrade: import 'localrepo' globally
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31875
diff
changeset
|
13 localrepo, |
47006
e050efe97fbe
typing: enable pytype processing on mercurial/upgrade_utils/actions.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
46903
diff
changeset
|
14 pycompat, |
45392
77b8588dd84e
requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45391
diff
changeset
|
15 requirements, |
46215
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
16 revlog, |
25970
d1419cfbd4f4
repair: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25874
diff
changeset
|
17 util, |
46050
f105c49e89cd
upgrade: split actual upgrade code away from the main module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46039
diff
changeset
|
18 ) |
f105c49e89cd
upgrade: split actual upgrade code away from the main module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46039
diff
changeset
|
19 |
46051
4b89cf08d8dc
upgrade: split definition and management of the actions from the main code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46050
diff
changeset
|
20 from ..utils import compression |
42137
d086ba387ae8
upgrade: support upgrade to/from zstd storage (issue6088)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42136
diff
changeset
|
21 |
47006
e050efe97fbe
typing: enable pytype processing on mercurial/upgrade_utils/actions.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
46903
diff
changeset
|
22 if pycompat.TYPE_CHECKING: |
e050efe97fbe
typing: enable pytype processing on mercurial/upgrade_utils/actions.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
46903
diff
changeset
|
23 from typing import ( |
e050efe97fbe
typing: enable pytype processing on mercurial/upgrade_utils/actions.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
46903
diff
changeset
|
24 List, |
e050efe97fbe
typing: enable pytype processing on mercurial/upgrade_utils/actions.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
46903
diff
changeset
|
25 Type, |
e050efe97fbe
typing: enable pytype processing on mercurial/upgrade_utils/actions.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
46903
diff
changeset
|
26 ) |
e050efe97fbe
typing: enable pytype processing on mercurial/upgrade_utils/actions.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
46903
diff
changeset
|
27 |
e050efe97fbe
typing: enable pytype processing on mercurial/upgrade_utils/actions.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
46903
diff
changeset
|
28 |
42842
a3c2ffcd266f
upgrade: make sure we reclone all revlogs when updating to some format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42841
diff
changeset
|
29 # list of requirements that request a clone of all revlog if added/removed |
a3c2ffcd266f
upgrade: make sure we reclone all revlogs when updating to some format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42841
diff
changeset
|
30 RECLONES_REQUIREMENTS = { |
46666
f4c325bf80fc
requirements: also add a generaldelta constant
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46665
diff
changeset
|
31 requirements.GENERALDELTA_REQUIREMENT, |
45393
d7dcc75a3eae
localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45392
diff
changeset
|
32 requirements.SPARSEREVLOG_REQUIREMENT, |
47243
33096e77598c
revlogv2: mark revlogv2 as requires a full upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47240
diff
changeset
|
33 requirements.REVLOGV2_REQUIREMENT, |
47275
60668fce06d0
changelogv2: allow upgrade from and to this format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47274
diff
changeset
|
34 requirements.CHANGELOGV2_REQUIREMENT, |
42842
a3c2ffcd266f
upgrade: make sure we reclone all revlogs when updating to some format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42841
diff
changeset
|
35 } |
a3c2ffcd266f
upgrade: make sure we reclone all revlogs when updating to some format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42841
diff
changeset
|
36 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
37 |
35311
ad2b35ebf670
upgraderepo: allow extension to register preserved requirements
Boris Feld <boris.feld@octobus.net>
parents:
33438
diff
changeset
|
38 def preservedrequirements(repo): |
ad2b35ebf670
upgraderepo: allow extension to register preserved requirements
Boris Feld <boris.feld@octobus.net>
parents:
33438
diff
changeset
|
39 return set() |
ad2b35ebf670
upgraderepo: allow extension to register preserved requirements
Boris Feld <boris.feld@octobus.net>
parents:
33438
diff
changeset
|
40 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
41 |
46206
9540945e51fd
actions: rename DEFICIENCY constant to FORMAT_VARIANT
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46205
diff
changeset
|
42 FORMAT_VARIANT = b'deficiency' |
46009
cfae98c4e1f1
upgrade: capitalize the `deficiency` constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46008
diff
changeset
|
43 OPTIMISATION = b'optimization' |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
44 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
45 |
31868
9f84ccb1b282
upgrade: drop the prefix to the 'improvement' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31867
diff
changeset
|
46 class improvement(object): |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
47 """Represents an improvement that can be made as part of an upgrade.""" |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
48 |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
49 ### The following attributes should be defined for each subclass: |
46448
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
50 |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
51 # Either ``FORMAT_VARIANT`` or ``OPTIMISATION``. |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
52 # A format variant is where we change the storage format. Not all format |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
53 # variant changes are an obvious problem. |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
54 # An optimization is an action (sometimes optional) that |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
55 # can be taken to further improve the state of the repository. |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
56 type = None |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
57 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
58 # machine-readable string uniquely identifying this improvement. it will be |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
59 # mapped to an action later in the upgrade process. |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
60 name = None |
32030
e47223576b8d
upgrade: introduce a 'formatvariant' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32029
diff
changeset
|
61 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
62 # message intended for humans explaining the improvement in more detail, |
46206
9540945e51fd
actions: rename DEFICIENCY constant to FORMAT_VARIANT
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46205
diff
changeset
|
63 # including the implications of it ``FORMAT_VARIANT`` types, should be |
9540945e51fd
actions: rename DEFICIENCY constant to FORMAT_VARIANT
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46205
diff
changeset
|
64 # worded |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
65 # in the present tense. |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
66 description = None |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
67 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
68 # message intended for humans explaining what an upgrade addressing this |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
69 # issue will do. should be worded in the future tense. |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
70 upgrademessage = None |
32030
e47223576b8d
upgrade: introduce a 'formatvariant' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32029
diff
changeset
|
71 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
72 # value of current Mercurial default for new repository |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
73 default = None |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
74 |
46213
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
75 # Message intended for humans which will be shown post an upgrade |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
76 # operation when the improvement will be added |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
77 postupgrademessage = None |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
78 |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
79 # Message intended for humans which will be shown post an upgrade |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
80 # operation in which this improvement was removed |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
81 postdowngrademessage = None |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
82 |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
83 # By default we assume that every improvement touches requirements and all revlogs |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
84 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
85 # Whether this improvement touches filelogs |
46448
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
86 touches_filelogs = True |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
87 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
88 # Whether this improvement touches manifests |
46448
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
89 touches_manifests = True |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
90 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
91 # Whether this improvement touches changelog |
46448
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
92 touches_changelog = True |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
93 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
94 # Whether this improvement changes repository requirements |
46448
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
95 touches_requirements = True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
96 |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
97 # Whether this improvement touches the dirstate |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
98 touches_dirstate = False |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
99 |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
100 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
101 allformatvariant = [] # type: List[Type['formatvariant']] |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
102 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
103 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
104 def registerformatvariant(cls): |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
105 allformatvariant.append(cls) |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
106 return cls |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
107 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
108 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
109 class formatvariant(improvement): |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
110 """an improvement subclass dedicated to repository format""" |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
111 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
112 type = FORMAT_VARIANT |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
113 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
114 @staticmethod |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
115 def fromrepo(repo): |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
116 """current value of the variant in the repository""" |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
117 raise NotImplementedError() |
32030
e47223576b8d
upgrade: introduce a 'formatvariant' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32029
diff
changeset
|
118 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
119 @staticmethod |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
120 def fromconfig(repo): |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
121 """current value of the variant in the configuration""" |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
122 raise NotImplementedError() |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
123 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
124 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
125 class requirementformatvariant(formatvariant): |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
126 """formatvariant based on a 'requirement' name. |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
127 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
128 Many format variant are controlled by a 'requirement'. We define a small |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
129 subclass to factor the code. |
32030
e47223576b8d
upgrade: introduce a 'formatvariant' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32029
diff
changeset
|
130 """ |
e47223576b8d
upgrade: introduce a 'formatvariant' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32029
diff
changeset
|
131 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
132 # the requirement that control this format variant |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
133 _requirement = None |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
134 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
135 @staticmethod |
39563
41aa5dced975
localrepo: pass ui to newreporequirements() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39271
diff
changeset
|
136 def _newreporequirements(ui): |
39997
dbcb466d0065
localrepo: define storage backend in creation options (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39875
diff
changeset
|
137 return localrepo.newreporequirements( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
138 ui, localrepo.defaultcreateopts(ui) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
139 ) |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
140 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
141 @classmethod |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
142 def fromrepo(cls, repo): |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
143 assert cls._requirement is not None |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
144 return cls._requirement in repo.requirements |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
145 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
146 @classmethod |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
147 def fromconfig(cls, repo): |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
148 assert cls._requirement is not None |
39563
41aa5dced975
localrepo: pass ui to newreporequirements() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39271
diff
changeset
|
149 return cls._requirement in cls._newreporequirements(repo.ui) |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
150 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
151 |
32032
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
152 @registerformatvariant |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
153 class fncache(requirementformatvariant): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
154 name = b'fncache' |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
155 |
46677
b4c2a2af25e2
requirements: also add a fncache constant
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46676
diff
changeset
|
156 _requirement = requirements.FNCACHE_REQUIREMENT |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
157 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
158 default = True |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
159 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
160 description = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
161 b'long and reserved filenames may not work correctly; ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
162 b'repository performance is sub-optimal' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
163 ) |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
164 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
165 upgrademessage = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
166 b'repository will be more resilient to storing ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
167 b'certain paths and performance of certain ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
168 b'operations should be improved' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
169 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
170 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
171 |
32032
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
172 @registerformatvariant |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
173 class dirstatev2(requirementformatvariant): |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
174 name = b'dirstate-v2' |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
175 _requirement = requirements.DIRSTATE_V2_REQUIREMENT |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
176 |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
177 default = False |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
178 |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
179 description = _( |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
180 b'version 1 of the dirstate file format requires ' |
48295
bf11ff22a9af
dirstate-v2: freeze the on-disk format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47646
diff
changeset
|
181 b'reading and parsing it all at once.\n' |
bf11ff22a9af
dirstate-v2: freeze the on-disk format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47646
diff
changeset
|
182 b'Version 2 has a better structure,' |
bf11ff22a9af
dirstate-v2: freeze the on-disk format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47646
diff
changeset
|
183 b'better information and lighter update mechanism' |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
184 ) |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
185 |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
186 upgrademessage = _(b'"hg status" will be faster') |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
187 |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
188 touches_filelogs = False |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
189 touches_manifests = False |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
190 touches_changelog = False |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
191 touches_requirements = True |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
192 touches_dirstate = True |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
193 |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
194 |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
195 @registerformatvariant |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
196 class dotencode(requirementformatvariant): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
197 name = b'dotencode' |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
198 |
46675
c3773636ddbb
requirements: also add a dotencode constant
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46666
diff
changeset
|
199 _requirement = requirements.DOTENCODE_REQUIREMENT |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
200 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
201 default = True |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
202 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
203 description = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
204 b'storage of filenames beginning with a period or ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
205 b'space may not work correctly' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
206 ) |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
207 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
208 upgrademessage = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
209 b'repository will be better able to store files ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
210 b'beginning with a space or period' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
211 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
212 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
213 |
32032
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
214 @registerformatvariant |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
215 class generaldelta(requirementformatvariant): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
216 name = b'generaldelta' |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
217 |
46666
f4c325bf80fc
requirements: also add a generaldelta constant
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46665
diff
changeset
|
218 _requirement = requirements.GENERALDELTA_REQUIREMENT |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
219 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
220 default = True |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
221 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
222 description = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
223 b'deltas within internal storage are unable to ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
224 b'choose optimal revisions; repository is larger and ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
225 b'slower than it could be; interaction with other ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
226 b'repositories may require extra network and CPU ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
227 b'resources, making "hg push" and "hg pull" slower' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
228 ) |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
229 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
230 upgrademessage = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
231 b'repository storage will be able to create ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
232 b'optimal deltas; new repository data will be ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
233 b'smaller and read times should decrease; ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
234 b'interacting with other repositories using this ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
235 b'storage model should require less network and ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
236 b'CPU resources, making "hg push" and "hg pull" ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
237 b'faster' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
238 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
239 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
240 |
32032
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
241 @registerformatvariant |
46051
4b89cf08d8dc
upgrade: split definition and management of the actions from the main code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46050
diff
changeset
|
242 class sharesafe(requirementformatvariant): |
46334
6e81446bf1d9
share: move share safe functionality out of experimental
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46230
diff
changeset
|
243 name = b'share-safe' |
46017
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
244 _requirement = requirements.SHARESAFE_REQUIREMENT |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
245 |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
246 default = False |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
247 |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
248 description = _( |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
249 b'old shared repositories do not share source repository ' |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
250 b'requirements and config. This leads to various problems ' |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
251 b'when the source repository format is upgraded or some new ' |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
252 b'extensions are enabled.' |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
253 ) |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
254 |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
255 upgrademessage = _( |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
256 b'Upgrades a repository to share-safe format so that future ' |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
257 b'shares of this repository share its requirements and configs.' |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
258 ) |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
259 |
46213
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
260 postdowngrademessage = _( |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
261 b'repository downgraded to not use share safe mode, ' |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
262 b'existing shares will not work and needs to' |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
263 b' be reshared.' |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
264 ) |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
265 |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
266 postupgrademessage = _( |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
267 b'repository upgraded to share safe mode, existing' |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
268 b' shares will still work in old non-safe mode. ' |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
269 b'Re-share existing shares to use them in safe mode' |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
270 b' New shares will be created in safe mode.' |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
271 ) |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
272 |
46449
60ea95471b83
upgrade: mark sharesafe improvement as only touching requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46448
diff
changeset
|
273 # upgrade only needs to change the requirements |
60ea95471b83
upgrade: mark sharesafe improvement as only touching requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46448
diff
changeset
|
274 touches_filelogs = False |
60ea95471b83
upgrade: mark sharesafe improvement as only touching requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46448
diff
changeset
|
275 touches_manifests = False |
60ea95471b83
upgrade: mark sharesafe improvement as only touching requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46448
diff
changeset
|
276 touches_changelog = False |
60ea95471b83
upgrade: mark sharesafe improvement as only touching requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46448
diff
changeset
|
277 touches_requirements = True |
60ea95471b83
upgrade: mark sharesafe improvement as only touching requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46448
diff
changeset
|
278 |
46017
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
279 |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46012
diff
changeset
|
280 @registerformatvariant |
38719
4ad2a1ff0404
upgrade: add information about sparse-revlog
Paul Morelle <paul.morelle@octobus.net>
parents:
38405
diff
changeset
|
281 class sparserevlog(requirementformatvariant): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
282 name = b'sparserevlog' |
38719
4ad2a1ff0404
upgrade: add information about sparse-revlog
Paul Morelle <paul.morelle@octobus.net>
parents:
38405
diff
changeset
|
283 |
45393
d7dcc75a3eae
localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45392
diff
changeset
|
284 _requirement = requirements.SPARSEREVLOG_REQUIREMENT |
38719
4ad2a1ff0404
upgrade: add information about sparse-revlog
Paul Morelle <paul.morelle@octobus.net>
parents:
38405
diff
changeset
|
285 |
40936
3764330f76a6
sparse-revlog: enabled by default
Boris Feld <boris.feld@octobus.net>
parents:
40855
diff
changeset
|
286 default = True |
38719
4ad2a1ff0404
upgrade: add information about sparse-revlog
Paul Morelle <paul.morelle@octobus.net>
parents:
38405
diff
changeset
|
287 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
288 description = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
289 b'in order to limit disk reading and memory usage on older ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
290 b'version, the span of a delta chain from its root to its ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
291 b'end is limited, whatever the relevant data in this span. ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
292 b'This can severly limit Mercurial ability to build good ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
293 b'chain of delta resulting is much more storage space being ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
294 b'taken and limit reusability of on disk delta during ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
295 b'exchange.' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
296 ) |
38719
4ad2a1ff0404
upgrade: add information about sparse-revlog
Paul Morelle <paul.morelle@octobus.net>
parents:
38405
diff
changeset
|
297 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
298 upgrademessage = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
299 b'Revlog supports delta chain with more unused data ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
300 b'between payload. These gaps will be skipped at read ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
301 b'time. This allows for better delta chains, making a ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
302 b'better compression and faster exchange with server.' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
303 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
304 |
38719
4ad2a1ff0404
upgrade: add information about sparse-revlog
Paul Morelle <paul.morelle@octobus.net>
parents:
38405
diff
changeset
|
305 |
4ad2a1ff0404
upgrade: add information about sparse-revlog
Paul Morelle <paul.morelle@octobus.net>
parents:
38405
diff
changeset
|
306 @registerformatvariant |
44876
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44875
diff
changeset
|
307 class persistentnodemap(requirementformatvariant): |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44875
diff
changeset
|
308 name = b'persistent-nodemap' |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44875
diff
changeset
|
309 |
45393
d7dcc75a3eae
localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45392
diff
changeset
|
310 _requirement = requirements.NODEMAP_REQUIREMENT |
44876
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44875
diff
changeset
|
311 |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44875
diff
changeset
|
312 default = False |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44875
diff
changeset
|
313 |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44875
diff
changeset
|
314 description = _( |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44875
diff
changeset
|
315 b'persist the node -> rev mapping on disk to speedup lookup' |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44875
diff
changeset
|
316 ) |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44875
diff
changeset
|
317 |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44875
diff
changeset
|
318 upgrademessage = _(b'Speedup revision lookup by node id.') |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44875
diff
changeset
|
319 |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44875
diff
changeset
|
320 |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44875
diff
changeset
|
321 @registerformatvariant |
43138
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
322 class copiessdc(requirementformatvariant): |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
323 name = b'copies-sdc' |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
324 |
45393
d7dcc75a3eae
localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45392
diff
changeset
|
325 _requirement = requirements.COPIESSDC_REQUIREMENT |
43138
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
326 |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
327 default = False |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
328 |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
329 description = _(b'Stores copies information alongside changesets.') |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
330 |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
331 upgrademessage = _( |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
332 b'Allows to use more efficient algorithm to deal with ' b'copy tracing.' |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
333 ) |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
334 |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
335 |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
336 @registerformatvariant |
46718
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
337 class revlogv2(requirementformatvariant): |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
338 name = b'revlog-v2' |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
339 _requirement = requirements.REVLOGV2_REQUIREMENT |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
340 default = False |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
341 description = _(b'Version 2 of the revlog.') |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
342 upgrademessage = _(b'very experimental') |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
343 |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
344 |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
345 @registerformatvariant |
47274
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47243
diff
changeset
|
346 class changelogv2(requirementformatvariant): |
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47243
diff
changeset
|
347 name = b'changelog-v2' |
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47243
diff
changeset
|
348 _requirement = requirements.CHANGELOGV2_REQUIREMENT |
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47243
diff
changeset
|
349 default = False |
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47243
diff
changeset
|
350 description = _(b'An iteration of the revlog focussed on changelog needs.') |
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47243
diff
changeset
|
351 upgrademessage = _(b'quite experimental') |
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47243
diff
changeset
|
352 |
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47243
diff
changeset
|
353 |
6c84fc9c9a90
changelogv2: introduce a "changelogv2" feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47243
diff
changeset
|
354 @registerformatvariant |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
355 class removecldeltachain(formatvariant): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
356 name = b'plain-cl-delta' |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
357 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
358 default = True |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
359 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
360 description = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
361 b'changelog storage is using deltas instead of ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
362 b'raw entries; changelog reading and any ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
363 b'operation relying on changelog data are slower ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
364 b'than they could be' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
365 ) |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
366 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
367 upgrademessage = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
368 b'changelog storage will be reformated to ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
369 b'store raw entries; changelog reading will be ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
370 b'faster; changelog size may be reduced' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
371 ) |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
372 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
373 @staticmethod |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
374 def fromrepo(repo): |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
375 # Mercurial 4.0 changed changelogs to not use delta chains. Search for |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
376 # changelogs with deltas. |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
377 cl = repo.changelog |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
378 chainbase = cl.chainbase |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
379 return all(rev == chainbase(rev) for rev in cl) |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
380 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
381 @staticmethod |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
382 def fromconfig(repo): |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
383 return True |
32030
e47223576b8d
upgrade: introduce a 'formatvariant' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32029
diff
changeset
|
384 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
385 |
46874
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
386 _has_zstd = ( |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
387 b'zstd' in util.compengines |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
388 and util.compengines[b'zstd'].available() |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
389 and util.compengines[b'zstd'].revlogheader() |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
390 ) |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
391 |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
392 |
35349
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35344
diff
changeset
|
393 @registerformatvariant |
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35344
diff
changeset
|
394 class compressionengine(formatvariant): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
395 name = b'compression' |
46874
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
396 |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
397 if _has_zstd: |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
398 default = b'zstd' |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
399 else: |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
400 default = b'zlib' |
35349
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35344
diff
changeset
|
401 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
402 description = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
403 b'Compresion algorithm used to compress data. ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
404 b'Some engine are faster than other' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
405 ) |
35349
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35344
diff
changeset
|
406 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
407 upgrademessage = _( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43089
diff
changeset
|
408 b'revlog content will be recompressed with the new algorithm.' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
409 ) |
35349
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35344
diff
changeset
|
410 |
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35344
diff
changeset
|
411 @classmethod |
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35344
diff
changeset
|
412 def fromrepo(cls, repo): |
42136
10a6725dca6e
compression: introduce an official `zstd-revlog` requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42046
diff
changeset
|
413 # we allow multiple compression engine requirement to co-exist because |
10a6725dca6e
compression: introduce an official `zstd-revlog` requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42046
diff
changeset
|
414 # strickly speaking, revlog seems to support mixed compression style. |
10a6725dca6e
compression: introduce an official `zstd-revlog` requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42046
diff
changeset
|
415 # |
10a6725dca6e
compression: introduce an official `zstd-revlog` requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42046
diff
changeset
|
416 # The compression used for new entries will be "the last one" |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
417 compression = b'zlib' |
35349
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35344
diff
changeset
|
418 for req in repo.requirements: |
42136
10a6725dca6e
compression: introduce an official `zstd-revlog` requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42046
diff
changeset
|
419 prefix = req.startswith |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
420 if prefix(b'revlog-compression-') or prefix(b'exp-compression-'): |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
421 compression = req.split(b'-', 2)[2] |
42136
10a6725dca6e
compression: introduce an official `zstd-revlog` requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42046
diff
changeset
|
422 return compression |
35349
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35344
diff
changeset
|
423 |
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35344
diff
changeset
|
424 @classmethod |
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35344
diff
changeset
|
425 def fromconfig(cls, repo): |
44413
f0027a3dd7cb
revlog-compression: update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43823
diff
changeset
|
426 compengines = repo.ui.configlist(b'format', b'revlog-compression') |
f0027a3dd7cb
revlog-compression: update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43823
diff
changeset
|
427 # return the first valid value as the selection code would do |
f0027a3dd7cb
revlog-compression: update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43823
diff
changeset
|
428 for comp in compengines: |
f0027a3dd7cb
revlog-compression: update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43823
diff
changeset
|
429 if comp in util.compengines: |
46851
3aa78f2aea48
revlog-compression: fix computation of engine availability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46719
diff
changeset
|
430 e = util.compengines[comp] |
3aa78f2aea48
revlog-compression: fix computation of engine availability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46719
diff
changeset
|
431 if e.available() and e.revlogheader(): |
3aa78f2aea48
revlog-compression: fix computation of engine availability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46719
diff
changeset
|
432 return comp |
44413
f0027a3dd7cb
revlog-compression: update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43823
diff
changeset
|
433 |
f0027a3dd7cb
revlog-compression: update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43823
diff
changeset
|
434 # no valide compression found lets display it all for clarity |
f0027a3dd7cb
revlog-compression: update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43823
diff
changeset
|
435 return b','.join(compengines) |
35349
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35344
diff
changeset
|
436 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
437 |
42045
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
438 @registerformatvariant |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
439 class compressionlevel(formatvariant): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
440 name = b'compression-level' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
441 default = b'default' |
42045
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
442 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
443 description = _(b'compression level') |
42045
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
444 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
445 upgrademessage = _(b'revlog content will be recompressed') |
42045
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
446 |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
447 @classmethod |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
448 def fromrepo(cls, repo): |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
449 comp = compressionengine.fromrepo(repo) |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
450 level = None |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
451 if comp == b'zlib': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
452 level = repo.ui.configint(b'storage', b'revlog.zlib.level') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
453 elif comp == b'zstd': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
454 level = repo.ui.configint(b'storage', b'revlog.zstd.level') |
42045
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
455 if level is None: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
456 return b'default' |
42045
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
457 return bytes(level) |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
458 |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
459 @classmethod |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
460 def fromconfig(cls, repo): |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
461 comp = compressionengine.fromconfig(repo) |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
462 level = None |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
463 if comp == b'zlib': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
464 level = repo.ui.configint(b'storage', b'revlog.zlib.level') |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
465 elif comp == b'zstd': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
466 level = repo.ui.configint(b'storage', b'revlog.zstd.level') |
42045
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
467 if level is None: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
468 return b'default' |
42045
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
469 return bytes(level) |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41092
diff
changeset
|
470 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
471 |
46205
53d083fa1f83
upgrade: rename finddeficiences() to find_format_upgrades()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46192
diff
changeset
|
472 def find_format_upgrades(repo): |
53d083fa1f83
upgrade: rename finddeficiences() to find_format_upgrades()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46192
diff
changeset
|
473 """returns a list of format upgrades which can be perform on the repo""" |
53d083fa1f83
upgrade: rename finddeficiences() to find_format_upgrades()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46192
diff
changeset
|
474 upgrades = [] |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
475 |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
476 # We could detect lack of revlogv1 and store here, but they were added |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
477 # in 0.9.2 and we don't support upgrading repos without these |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
478 # requirements, so let's not bother. |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
479 |
32032
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
480 for fv in allformatvariant: |
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
481 if not fv.fromrepo(repo): |
46205
53d083fa1f83
upgrade: rename finddeficiences() to find_format_upgrades()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46192
diff
changeset
|
482 upgrades.append(fv) |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
483 |
46205
53d083fa1f83
upgrade: rename finddeficiences() to find_format_upgrades()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46192
diff
changeset
|
484 return upgrades |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
485 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
486 |
46212
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
487 def find_format_downgrades(repo): |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
488 """returns a list of format downgrades which will be performed on the repo |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
489 because of disabled config option for them""" |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
490 |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
491 downgrades = [] |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
492 |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
493 for fv in allformatvariant: |
46230
1fcab88ab85c
downgrade: if a compression is removed, consider that too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46218
diff
changeset
|
494 if fv.name == b'compression': |
1fcab88ab85c
downgrade: if a compression is removed, consider that too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46218
diff
changeset
|
495 # If there is a compression change between repository |
1fcab88ab85c
downgrade: if a compression is removed, consider that too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46218
diff
changeset
|
496 # and config, destination repository compression will change |
1fcab88ab85c
downgrade: if a compression is removed, consider that too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46218
diff
changeset
|
497 # and current compression will be removed. |
1fcab88ab85c
downgrade: if a compression is removed, consider that too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46218
diff
changeset
|
498 if fv.fromrepo(repo) != fv.fromconfig(repo): |
1fcab88ab85c
downgrade: if a compression is removed, consider that too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46218
diff
changeset
|
499 downgrades.append(fv) |
1fcab88ab85c
downgrade: if a compression is removed, consider that too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46218
diff
changeset
|
500 continue |
46212
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
501 # format variant exist in repo but does not exist in new repository |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
502 # config |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
503 if fv.fromrepo(repo) and not fv.fromconfig(repo): |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
504 downgrades.append(fv) |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
505 |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
506 return downgrades |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
507 |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
508 |
46010
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
509 ALL_OPTIMISATIONS = [] |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
510 |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
511 |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
512 def register_optimization(obj): |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
513 ALL_OPTIMISATIONS.append(obj) |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
514 return obj |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
515 |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
516 |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
517 class optimization(improvement): |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
518 """an improvement subclass dedicated to optimizations""" |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
519 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
520 type = OPTIMISATION |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
521 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
522 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
523 @register_optimization |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
524 class redeltaparents(optimization): |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
525 name = b're-delta-parent' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
526 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
527 type = OPTIMISATION |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
528 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
529 description = _( |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
530 b'deltas within internal storage will be recalculated to ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
531 b'choose an optimal base revision where this was not ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
532 b'already done; the size of the repository may shrink and ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
533 b'various operations may become faster; the first time ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
534 b'this optimization is performed could slow down upgrade ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
535 b'execution considerably; subsequent invocations should ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
536 b'not run noticeably slower' |
46010
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
537 ) |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
538 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
539 upgrademessage = _( |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
540 b'deltas within internal storage will choose a new ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
541 b'base revision if needed' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
542 ) |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
543 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
544 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
545 @register_optimization |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
546 class redeltamultibase(optimization): |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
547 name = b're-delta-multibase' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
548 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
549 type = OPTIMISATION |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
550 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
551 description = _( |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
552 b'deltas within internal storage will be recalculated ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
553 b'against multiple base revision and the smallest ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
554 b'difference will be used; the size of the repository may ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
555 b'shrink significantly when there are many merges; this ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
556 b'optimization will slow down execution in proportion to ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
557 b'the number of merges in the repository and the amount ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
558 b'of files in the repository; this slow down should not ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
559 b'be significant unless there are tens of thousands of ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
560 b'files and thousands of merges' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
561 ) |
46010
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
562 |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
563 upgrademessage = _( |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
564 b'deltas within internal storage will choose an ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
565 b'optimal delta by computing deltas against multiple ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
566 b'parents; may slow down execution time ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
567 b'significantly' |
46010
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
568 ) |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
569 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
570 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
571 @register_optimization |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
572 class redeltaall(optimization): |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
573 name = b're-delta-all' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
574 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
575 type = OPTIMISATION |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
576 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
577 description = _( |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
578 b'deltas within internal storage will always be ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
579 b'recalculated without reusing prior deltas; this will ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
580 b'likely make execution run several times slower; this ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
581 b'optimization is typically not needed' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
582 ) |
46010
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
583 |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
584 upgrademessage = _( |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
585 b'deltas within internal storage will be fully ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
586 b'recomputed; this will likely drastically slow down ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
587 b'execution time' |
46010
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
588 ) |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
589 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
590 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
591 @register_optimization |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
592 class redeltafulladd(optimization): |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
593 name = b're-delta-fulladd' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
594 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
595 type = OPTIMISATION |
46010
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
596 |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
597 description = _( |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
598 b'every revision will be re-added as if it was new ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
599 b'content. It will go through the full storage ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
600 b'mechanism giving extensions a chance to process it ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
601 b'(eg. lfs). This is similar to "re-delta-all" but even ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
602 b'slower since more logic is involved.' |
46010
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
603 ) |
47327
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
604 |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
605 upgrademessage = _( |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
606 b'each revision will be added as new content to the ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
607 b'internal storage; this will likely drastically slow ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
608 b'down execution time, but some extensions might need ' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
609 b'it' |
e985a36c2aa3
upgrade: Use `improvement` subclasses everywhere, not instances
Simon Sapin <simon.sapin@octobus.net>
parents:
47288
diff
changeset
|
610 ) |
46010
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
611 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
612 |
31896
127b41e975fd
upgrade: split finding deficiencies from finding optimisations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31895
diff
changeset
|
613 def findoptimizations(repo): |
127b41e975fd
upgrade: split finding deficiencies from finding optimisations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31895
diff
changeset
|
614 """Determine optimisation that could be used during upgrade""" |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
615 # These are unconditionally added. There is logic later that figures out |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
616 # which ones to apply. |
46010
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46009
diff
changeset
|
617 return list(ALL_OPTIMISATIONS) |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
618 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
619 |
46210
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
620 def determine_upgrade_actions( |
46209
a51d345f1404
upgrade: move optimization addition to determineactions()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46206
diff
changeset
|
621 repo, format_upgrades, optimizations, sourcereqs, destreqs |
a51d345f1404
upgrade: move optimization addition to determineactions()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46206
diff
changeset
|
622 ): |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
623 """Determine upgrade actions that will be performed. |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
624 |
46205
53d083fa1f83
upgrade: rename finddeficiences() to find_format_upgrades()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46192
diff
changeset
|
625 Given a list of improvements as returned by ``find_format_upgrades`` and |
31896
127b41e975fd
upgrade: split finding deficiencies from finding optimisations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31895
diff
changeset
|
626 ``findoptimizations``, determine the list of upgrade actions that |
127b41e975fd
upgrade: split finding deficiencies from finding optimisations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31895
diff
changeset
|
627 will be performed. |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
628 |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
629 The role of this function is to filter improvements if needed, apply |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
630 recommended optimizations from the improvements list that make sense, |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
631 etc. |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
632 |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
633 Returns a list of action names. |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
634 """ |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
635 newactions = [] |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
636 |
46205
53d083fa1f83
upgrade: rename finddeficiences() to find_format_upgrades()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46192
diff
changeset
|
637 for d in format_upgrades: |
47646
4259a72fe528
upgrade_utils: fix crash for removecldeltachain action
Mathias De Mare <mathias.de_mare@nokia.com>
parents:
47328
diff
changeset
|
638 if util.safehasattr(d, '_requirement'): |
4259a72fe528
upgrade_utils: fix crash for removecldeltachain action
Mathias De Mare <mathias.de_mare@nokia.com>
parents:
47328
diff
changeset
|
639 name = d._requirement |
4259a72fe528
upgrade_utils: fix crash for removecldeltachain action
Mathias De Mare <mathias.de_mare@nokia.com>
parents:
47328
diff
changeset
|
640 else: |
4259a72fe528
upgrade_utils: fix crash for removecldeltachain action
Mathias De Mare <mathias.de_mare@nokia.com>
parents:
47328
diff
changeset
|
641 name = None |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
642 |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
643 # If the action is a requirement that doesn't show up in the |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
644 # destination requirements, prune the action. |
44741
c36a3fcfc36b
upgrade: properly filter action depending on planned work
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44470
diff
changeset
|
645 if name is not None and name not in destreqs: |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
646 continue |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
647 |
31903
fa1088de2119
upgrade: use 'improvement' object for action too
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31902
diff
changeset
|
648 newactions.append(d) |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
649 |
46209
a51d345f1404
upgrade: move optimization addition to determineactions()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46206
diff
changeset
|
650 newactions.extend(o for o in sorted(optimizations) if o not in newactions) |
a51d345f1404
upgrade: move optimization addition to determineactions()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46206
diff
changeset
|
651 |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
652 # FUTURE consider adding some optimizations here for certain transitions. |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
653 # e.g. adding generaldelta could schedule parent redeltas. |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
654 |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
655 return newactions |
46052
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
656 |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
657 |
46060
c407513a44a3
upgrade: start moving the "to be happening" data in a dedicated object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46056
diff
changeset
|
658 class UpgradeOperation(object): |
c407513a44a3
upgrade: start moving the "to be happening" data in a dedicated object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46056
diff
changeset
|
659 """represent the work to be done during an upgrade""" |
c407513a44a3
upgrade: start moving the "to be happening" data in a dedicated object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46056
diff
changeset
|
660 |
46191
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
661 def __init__( |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
662 self, |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
663 ui, |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
664 new_requirements, |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
665 current_requirements, |
46210
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
666 upgrade_actions, |
46213
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
667 removed_actions, |
46191
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
668 revlogs_to_process, |
46447
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46334
diff
changeset
|
669 backup_store, |
46191
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
670 ): |
46188
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46060
diff
changeset
|
671 self.ui = ui |
46191
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
672 self.new_requirements = new_requirements |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
673 self.current_requirements = current_requirements |
46210
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
674 # list of upgrade actions the operation will perform |
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
675 self.upgrade_actions = upgrade_actions |
46213
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
676 self.removed_actions = removed_actions |
46060
c407513a44a3
upgrade: start moving the "to be happening" data in a dedicated object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46056
diff
changeset
|
677 self.revlogs_to_process = revlogs_to_process |
46191
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
678 # requirements which will be added by the operation |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
679 self._added_requirements = ( |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
680 self.new_requirements - self.current_requirements |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
681 ) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
682 # requirements which will be removed by the operation |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
683 self._removed_requirements = ( |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
684 self.current_requirements - self.new_requirements |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
685 ) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
686 # requirements which will be preserved by the operation |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
687 self._preserved_requirements = ( |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
688 self.current_requirements & self.new_requirements |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
689 ) |
46192
25d11b24dedf
upgrade: move printing of unused optimizations to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
690 # optimizations which are not used and it's recommended that they |
25d11b24dedf
upgrade: move printing of unused optimizations to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
691 # should use them |
25d11b24dedf
upgrade: move printing of unused optimizations to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
692 all_optimizations = findoptimizations(None) |
25d11b24dedf
upgrade: move printing of unused optimizations to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
693 self.unused_optimizations = [ |
46210
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
694 i for i in all_optimizations if i not in self.upgrade_actions |
46192
25d11b24dedf
upgrade: move printing of unused optimizations to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
695 ] |
46060
c407513a44a3
upgrade: start moving the "to be happening" data in a dedicated object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46056
diff
changeset
|
696 |
46215
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
697 # delta reuse mode of this upgrade operation |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
698 upgrade_actions_names = self.upgrade_actions_names |
46215
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
699 self.delta_reuse_mode = revlog.revlog.DELTAREUSEALWAYS |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
700 if b're-delta-all' in upgrade_actions_names: |
46215
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
701 self.delta_reuse_mode = revlog.revlog.DELTAREUSENEVER |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
702 elif b're-delta-parent' in upgrade_actions_names: |
46215
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
703 self.delta_reuse_mode = revlog.revlog.DELTAREUSESAMEREVS |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
704 elif b're-delta-multibase' in upgrade_actions_names: |
46215
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
705 self.delta_reuse_mode = revlog.revlog.DELTAREUSESAMEREVS |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
706 elif b're-delta-fulladd' in upgrade_actions_names: |
46215
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
707 self.delta_reuse_mode = revlog.revlog.DELTAREUSEFULLADD |
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
708 |
46218
3f92a9bb80f0
engine: prevent multiple checking of re-delta-multibase
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46215
diff
changeset
|
709 # should this operation force re-delta of both parents |
3f92a9bb80f0
engine: prevent multiple checking of re-delta-multibase
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46215
diff
changeset
|
710 self.force_re_delta_both_parents = ( |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
711 b're-delta-multibase' in upgrade_actions_names |
46218
3f92a9bb80f0
engine: prevent multiple checking of re-delta-multibase
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46215
diff
changeset
|
712 ) |
3f92a9bb80f0
engine: prevent multiple checking of re-delta-multibase
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46215
diff
changeset
|
713 |
46447
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46334
diff
changeset
|
714 # should this operation create a backup of the store |
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46334
diff
changeset
|
715 self.backup_store = backup_store |
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46334
diff
changeset
|
716 |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
717 @property |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
718 def upgrade_actions_names(self): |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
719 return set([a.name for a in self.upgrade_actions]) |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
720 |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
721 @property |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
722 def requirements_only(self): |
46448
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
723 # does the operation only touches repository requirement |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
724 return ( |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
725 self.touches_requirements |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
726 and not self.touches_filelogs |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
727 and not self.touches_manifests |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
728 and not self.touches_changelog |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
729 and not self.touches_dirstate |
46448
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
730 ) |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
731 |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
732 @property |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
733 def touches_filelogs(self): |
46448
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
734 for a in self.upgrade_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
735 # in optimisations, we re-process the revlogs again |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
736 if a.type == OPTIMISATION: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
737 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
738 elif a.touches_filelogs: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
739 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
740 for a in self.removed_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
741 if a.touches_filelogs: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
742 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
743 return False |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
744 |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
745 @property |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
746 def touches_manifests(self): |
46448
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
747 for a in self.upgrade_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
748 # in optimisations, we re-process the revlogs again |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
749 if a.type == OPTIMISATION: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
750 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
751 elif a.touches_manifests: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
752 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
753 for a in self.removed_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
754 if a.touches_manifests: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
755 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
756 return False |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
757 |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
758 @property |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
759 def touches_changelog(self): |
46448
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
760 for a in self.upgrade_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
761 # in optimisations, we re-process the revlogs again |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
762 if a.type == OPTIMISATION: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
763 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
764 elif a.touches_changelog: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
765 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
766 for a in self.removed_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
767 if a.touches_changelog: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
768 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
769 return False |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
770 |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
771 @property |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
772 def touches_requirements(self): |
46448
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
773 for a in self.upgrade_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
774 # optimisations are used to re-process revlogs and does not result |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
775 # in a requirement being added or removed |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
776 if a.type == OPTIMISATION: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
777 pass |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
778 elif a.touches_requirements: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
779 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
780 for a in self.removed_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
781 if a.touches_requirements: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
782 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
783 |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
784 @property |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
785 def touches_dirstate(self): |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
786 for a in self.upgrade_actions: |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
787 # revlog optimisations do not affect the dirstate |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
788 if a.type == OPTIMISATION: |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
789 pass |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
790 elif a.touches_dirstate: |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
791 return True |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
792 for a in self.removed_actions: |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
793 if a.touches_dirstate: |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
794 return True |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
795 |
46448
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
796 return False |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
797 |
46190
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
798 def _write_labeled(self, l, label): |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
799 """ |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
800 Utility function to aid writing of a list under one label |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
801 """ |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
802 first = True |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
803 for r in sorted(l): |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
804 if not first: |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
805 self.ui.write(b', ') |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
806 self.ui.write(r, label=label) |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
807 first = False |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
808 |
46191
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
809 def print_requirements(self): |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
810 self.ui.write(_(b'requirements\n')) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
811 self.ui.write(_(b' preserved: ')) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
812 self._write_labeled( |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
813 self._preserved_requirements, "upgrade-repo.requirement.preserved" |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
814 ) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
815 self.ui.write((b'\n')) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
816 if self._removed_requirements: |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
817 self.ui.write(_(b' removed: ')) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
818 self._write_labeled( |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
819 self._removed_requirements, "upgrade-repo.requirement.removed" |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
820 ) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
821 self.ui.write((b'\n')) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
822 if self._added_requirements: |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
823 self.ui.write(_(b' added: ')) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
824 self._write_labeled( |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
825 self._added_requirements, "upgrade-repo.requirement.added" |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
826 ) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
827 self.ui.write((b'\n')) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
828 self.ui.write(b'\n') |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
829 |
46190
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
830 def print_optimisations(self): |
46210
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
831 optimisations = [ |
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
832 a for a in self.upgrade_actions if a.type == OPTIMISATION |
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
833 ] |
46190
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
834 optimisations.sort(key=lambda a: a.name) |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
835 if optimisations: |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
836 self.ui.write(_(b'optimisations: ')) |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
837 self._write_labeled( |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
838 [a.name for a in optimisations], |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
839 "upgrade-repo.optimisation.performed", |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
840 ) |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
841 self.ui.write(b'\n\n') |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
842 |
46189
dfddcbb0c244
upgrade: move `printupgradeactions()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46188
diff
changeset
|
843 def print_upgrade_actions(self): |
46210
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
844 for a in self.upgrade_actions: |
46189
dfddcbb0c244
upgrade: move `printupgradeactions()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46188
diff
changeset
|
845 self.ui.status(b'%s\n %s\n\n' % (a.name, a.upgrademessage)) |
dfddcbb0c244
upgrade: move `printupgradeactions()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46188
diff
changeset
|
846 |
46188
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46060
diff
changeset
|
847 def print_affected_revlogs(self): |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46060
diff
changeset
|
848 if not self.revlogs_to_process: |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46060
diff
changeset
|
849 self.ui.write((b'no revlogs to process\n')) |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46060
diff
changeset
|
850 else: |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46060
diff
changeset
|
851 self.ui.write((b'processed revlogs:\n')) |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46060
diff
changeset
|
852 for r in sorted(self.revlogs_to_process): |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46060
diff
changeset
|
853 self.ui.write((b' - %s\n' % r)) |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46060
diff
changeset
|
854 self.ui.write((b'\n')) |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46060
diff
changeset
|
855 |
46192
25d11b24dedf
upgrade: move printing of unused optimizations to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
856 def print_unused_optimizations(self): |
25d11b24dedf
upgrade: move printing of unused optimizations to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
857 for i in self.unused_optimizations: |
25d11b24dedf
upgrade: move printing of unused optimizations to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
858 self.ui.status(_(b'%s\n %s\n\n') % (i.name, i.description)) |
25d11b24dedf
upgrade: move printing of unused optimizations to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
859 |
46210
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
860 def has_upgrade_action(self, name): |
47031
f38bf44e077f
black: make codebase compatible with black v21.4b2 and v20.8b1
Kyle Lippincott <spectral@google.com>
parents:
47006
diff
changeset
|
861 """Check whether the upgrade operation will perform this action""" |
46210
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
862 return name in self._upgrade_actions_names |
46189
dfddcbb0c244
upgrade: move `printupgradeactions()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46188
diff
changeset
|
863 |
46213
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
864 def print_post_op_messages(self): |
47031
f38bf44e077f
black: make codebase compatible with black v21.4b2 and v20.8b1
Kyle Lippincott <spectral@google.com>
parents:
47006
diff
changeset
|
865 """print post upgrade operation warning messages""" |
46213
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
866 for a in self.upgrade_actions: |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
867 if a.postupgrademessage is not None: |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
868 self.ui.warn(b'%s\n' % a.postupgrademessage) |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
869 for a in self.removed_actions: |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
870 if a.postdowngrademessage is not None: |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
871 self.ui.warn(b'%s\n' % a.postdowngrademessage) |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
872 |
46060
c407513a44a3
upgrade: start moving the "to be happening" data in a dedicated object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46056
diff
changeset
|
873 |
46053
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
874 ### Code checking if a repository can got through the upgrade process at all. # |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
875 |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
876 |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
877 def requiredsourcerequirements(repo): |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
878 """Obtain requirements required to be present to upgrade a repo. |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
879 |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
880 An upgrade will not be allowed if the repository doesn't have the |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
881 requirements returned by this function. |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
882 """ |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
883 return { |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
884 # Introduced in Mercurial 0.9.2. |
46676
ab58098bebed
requirements: also add a store constant
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46675
diff
changeset
|
885 requirements.STORE_REQUIREMENT, |
46053
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
886 } |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
887 |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
888 |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
889 def blocksourcerequirements(repo): |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
890 """Obtain requirements that will prevent an upgrade from occurring. |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
891 |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
892 An upgrade cannot be performed if the source repository contains a |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
893 requirements in the returned set. |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
894 """ |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
895 return { |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
896 # The upgrade code does not yet support these experimental features. |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
897 # This is an artificial limitation. |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
898 requirements.TREEMANIFEST_REQUIREMENT, |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
899 # This was a precursor to generaldelta and was never enabled by default. |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
900 # It should (hopefully) not exist in the wild. |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
901 b'parentdelta', |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
902 # Upgrade should operate on the actual store, not the shared link. |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
903 requirements.SHARED_REQUIREMENT, |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
904 } |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
905 |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
906 |
46718
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
907 def check_revlog_version(reqs): |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
908 """Check that the requirements contain at least one Revlog version""" |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
909 all_revlogs = { |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
910 requirements.REVLOGV1_REQUIREMENT, |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
911 requirements.REVLOGV2_REQUIREMENT, |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
912 } |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
913 if not all_revlogs.intersection(reqs): |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
914 msg = _(b'cannot upgrade repository; missing a revlog version') |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
915 raise error.Abort(msg) |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
916 |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
917 |
46052
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
918 def check_source_requirements(repo): |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
919 """Ensure that no existing requirements prevent the repository upgrade""" |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
920 |
46718
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
921 check_revlog_version(repo.requirements) |
46052
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
922 required = requiredsourcerequirements(repo) |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
923 missingreqs = required - repo.requirements |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
924 if missingreqs: |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
925 msg = _(b'cannot upgrade repository; requirement missing: %s') |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
926 missingreqs = b', '.join(sorted(missingreqs)) |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
927 raise error.Abort(msg % missingreqs) |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
928 |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
929 blocking = blocksourcerequirements(repo) |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
930 blockingreqs = blocking & repo.requirements |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
931 if blockingreqs: |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
932 m = _(b'cannot upgrade repository; unsupported source requirement: %s') |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
933 blockingreqs = b', '.join(sorted(blockingreqs)) |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
934 raise error.Abort(m % blockingreqs) |
46055
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
935 |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
936 |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
937 ### Verify the validity of the planned requirement changes #################### |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
938 |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
939 |
46056
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
940 def supportremovedrequirements(repo): |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
941 """Obtain requirements that can be removed during an upgrade. |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
942 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
943 If an upgrade were to create a repository that dropped a requirement, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
944 the dropped requirement must appear in the returned set for the upgrade |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
945 to be allowed. |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
946 """ |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
947 supported = { |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
948 requirements.SPARSEREVLOG_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
949 requirements.COPIESSDC_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
950 requirements.NODEMAP_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
951 requirements.SHARESAFE_REQUIREMENT, |
46718
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
952 requirements.REVLOGV2_REQUIREMENT, |
47275
60668fce06d0
changelogv2: allow upgrade from and to this format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47274
diff
changeset
|
953 requirements.CHANGELOGV2_REQUIREMENT, |
46718
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
954 requirements.REVLOGV1_REQUIREMENT, |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
955 requirements.DIRSTATE_V2_REQUIREMENT, |
46056
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
956 } |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
957 for name in compression.compengines: |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
958 engine = compression.compengines[name] |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
959 if engine.available() and engine.revlogheader(): |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
960 supported.add(b'exp-compression-%s' % name) |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
961 if engine.name() == b'zstd': |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
962 supported.add(b'revlog-compression-zstd') |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
963 return supported |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
964 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
965 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
966 def supporteddestrequirements(repo): |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
967 """Obtain requirements that upgrade supports in the destination. |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
968 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
969 If the result of the upgrade would create requirements not in this set, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
970 the upgrade is disallowed. |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
971 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
972 Extensions should monkeypatch this to add their custom requirements. |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
973 """ |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
974 supported = { |
46675
c3773636ddbb
requirements: also add a dotencode constant
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46666
diff
changeset
|
975 requirements.DOTENCODE_REQUIREMENT, |
46677
b4c2a2af25e2
requirements: also add a fncache constant
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46676
diff
changeset
|
976 requirements.FNCACHE_REQUIREMENT, |
46666
f4c325bf80fc
requirements: also add a generaldelta constant
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46665
diff
changeset
|
977 requirements.GENERALDELTA_REQUIREMENT, |
46718
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
978 requirements.REVLOGV1_REQUIREMENT, # allowed in case of downgrade |
46676
ab58098bebed
requirements: also add a store constant
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46675
diff
changeset
|
979 requirements.STORE_REQUIREMENT, |
46056
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
980 requirements.SPARSEREVLOG_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
981 requirements.COPIESSDC_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
982 requirements.NODEMAP_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
983 requirements.SHARESAFE_REQUIREMENT, |
46718
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
984 requirements.REVLOGV2_REQUIREMENT, |
47275
60668fce06d0
changelogv2: allow upgrade from and to this format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47274
diff
changeset
|
985 requirements.CHANGELOGV2_REQUIREMENT, |
47288
ed0d54b20c5b
dirstate-v2: Add a new experimental `exp-dirstate-v2` repository requirement
Simon Sapin <simon.sapin@octobus.net>
parents:
47275
diff
changeset
|
986 requirements.DIRSTATE_V2_REQUIREMENT, |
46056
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
987 } |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
988 for name in compression.compengines: |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
989 engine = compression.compengines[name] |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
990 if engine.available() and engine.revlogheader(): |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
991 supported.add(b'exp-compression-%s' % name) |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
992 if engine.name() == b'zstd': |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
993 supported.add(b'revlog-compression-zstd') |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
994 return supported |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
995 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
996 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
997 def allowednewrequirements(repo): |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
998 """Obtain requirements that can be added to a repository during upgrade. |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
999 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1000 This is used to disallow proposed requirements from being added when |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1001 they weren't present before. |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1002 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1003 We use a list of allowed requirement additions instead of a list of known |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1004 bad additions because the whitelist approach is safer and will prevent |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1005 future, unknown requirements from accidentally being added. |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1006 """ |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1007 supported = { |
46675
c3773636ddbb
requirements: also add a dotencode constant
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46666
diff
changeset
|
1008 requirements.DOTENCODE_REQUIREMENT, |
46677
b4c2a2af25e2
requirements: also add a fncache constant
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46676
diff
changeset
|
1009 requirements.FNCACHE_REQUIREMENT, |
46666
f4c325bf80fc
requirements: also add a generaldelta constant
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46665
diff
changeset
|
1010 requirements.GENERALDELTA_REQUIREMENT, |
46056
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1011 requirements.SPARSEREVLOG_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1012 requirements.COPIESSDC_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1013 requirements.NODEMAP_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1014 requirements.SHARESAFE_REQUIREMENT, |
46718
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
1015 requirements.REVLOGV1_REQUIREMENT, |
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
1016 requirements.REVLOGV2_REQUIREMENT, |
47275
60668fce06d0
changelogv2: allow upgrade from and to this format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47274
diff
changeset
|
1017 requirements.CHANGELOGV2_REQUIREMENT, |
47328
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47327
diff
changeset
|
1018 requirements.DIRSTATE_V2_REQUIREMENT, |
46056
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1019 } |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1020 for name in compression.compengines: |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1021 engine = compression.compengines[name] |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1022 if engine.available() and engine.revlogheader(): |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1023 supported.add(b'exp-compression-%s' % name) |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1024 if engine.name() == b'zstd': |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1025 supported.add(b'revlog-compression-zstd') |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1026 return supported |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1027 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46055
diff
changeset
|
1028 |
46055
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1029 def check_requirements_changes(repo, new_reqs): |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1030 old_reqs = repo.requirements |
46718
fd55a9eb1507
revlogv2: allow upgrading to v2
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46677
diff
changeset
|
1031 check_revlog_version(repo.requirements) |
46055
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1032 support_removal = supportremovedrequirements(repo) |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1033 no_remove_reqs = old_reqs - new_reqs - support_removal |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1034 if no_remove_reqs: |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1035 msg = _(b'cannot upgrade repository; requirement would be removed: %s') |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1036 no_remove_reqs = b', '.join(sorted(no_remove_reqs)) |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1037 raise error.Abort(msg % no_remove_reqs) |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1038 |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1039 support_addition = allowednewrequirements(repo) |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1040 no_add_reqs = new_reqs - old_reqs - support_addition |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1041 if no_add_reqs: |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1042 m = _(b'cannot upgrade repository; do not support adding requirement: ') |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1043 no_add_reqs = b', '.join(sorted(no_add_reqs)) |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1044 raise error.Abort(m + no_add_reqs) |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1045 |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1046 supported = supporteddestrequirements(repo) |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1047 unsupported_reqs = new_reqs - supported |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1048 if unsupported_reqs: |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1049 msg = _( |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1050 b'cannot upgrade repository; do not support destination ' |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1051 b'requirement: %s' |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1052 ) |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1053 unsupported_reqs = b', '.join(sorted(unsupported_reqs)) |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46053
diff
changeset
|
1054 raise error.Abort(msg % unsupported_reqs) |