Mercurial > hg
annotate mercurial/upgrade_utils/actions.py @ 46969:d9531094cf8e
cmdutil: fix an uninitialize variable usage in clearunfinished()
I happened to notice that PyCharm flagged this while looking for something else.
I'm pretty sure it meant to check the current state in the iteration, and not
keep reusing the last one in the previous iteration.
Differential Revision: https://phab.mercurial-scm.org/D10459
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 17 Apr 2021 00:28:21 -0400 |
parents | 856820b497fc |
children | e050efe97fbe |
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 |
46810
bc268ea9f984
typing: disable processing of mercurial/upgrade_utils/actions.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
46334
diff
changeset
|
8 # See https://github.com/google/pytype/issues/860 |
bc268ea9f984
typing: disable processing of mercurial/upgrade_utils/actions.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
46334
diff
changeset
|
9 # pytype: skip-file |
bc268ea9f984
typing: disable processing of mercurial/upgrade_utils/actions.py
Matt Harbison <matt_harbison@yahoo.com>
parents:
46334
diff
changeset
|
10 |
25970
d1419cfbd4f4
repair: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25874
diff
changeset
|
11 from __future__ import absolute_import |
d1419cfbd4f4
repair: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25874
diff
changeset
|
12 |
46047
4b89cf08d8dc
upgrade: split definition and management of the actions from the main code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46046
diff
changeset
|
13 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:
46046
diff
changeset
|
14 from .. import ( |
46048
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
15 error, |
31893
165428b05fca
upgrade: import 'localrepo' globally
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31875
diff
changeset
|
16 localrepo, |
45372
77b8588dd84e
requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45371
diff
changeset
|
17 requirements, |
46215
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
18 revlog, |
25970
d1419cfbd4f4
repair: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25874
diff
changeset
|
19 util, |
46046
f105c49e89cd
upgrade: split actual upgrade code away from the main module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46035
diff
changeset
|
20 ) |
f105c49e89cd
upgrade: split actual upgrade code away from the main module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46035
diff
changeset
|
21 |
46047
4b89cf08d8dc
upgrade: split definition and management of the actions from the main code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46046
diff
changeset
|
22 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
|
23 |
42832
a3c2ffcd266f
upgrade: make sure we reclone all revlogs when updating to some format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42831
diff
changeset
|
24 # 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:
42831
diff
changeset
|
25 RECLONES_REQUIREMENTS = { |
46627
f4c325bf80fc
requirements: also add a generaldelta constant
Raphaël Gomès <rgomes@octobus.net>
parents:
46626
diff
changeset
|
26 requirements.GENERALDELTA_REQUIREMENT, |
45373
d7dcc75a3eae
localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45372
diff
changeset
|
27 requirements.SPARSEREVLOG_REQUIREMENT, |
42832
a3c2ffcd266f
upgrade: make sure we reclone all revlogs when updating to some format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42831
diff
changeset
|
28 } |
a3c2ffcd266f
upgrade: make sure we reclone all revlogs when updating to some format
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42831
diff
changeset
|
29 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
30 |
35302
ad2b35ebf670
upgraderepo: allow extension to register preserved requirements
Boris Feld <boris.feld@octobus.net>
parents:
33438
diff
changeset
|
31 def preservedrequirements(repo): |
ad2b35ebf670
upgraderepo: allow extension to register preserved requirements
Boris Feld <boris.feld@octobus.net>
parents:
33438
diff
changeset
|
32 return set() |
ad2b35ebf670
upgraderepo: allow extension to register preserved requirements
Boris Feld <boris.feld@octobus.net>
parents:
33438
diff
changeset
|
33 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
34 |
46206
9540945e51fd
actions: rename DEFICIENCY constant to FORMAT_VARIANT
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46205
diff
changeset
|
35 FORMAT_VARIANT = b'deficiency' |
45994
cfae98c4e1f1
upgrade: capitalize the `deficiency` constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45993
diff
changeset
|
36 OPTIMISATION = b'optimization' |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
37 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
38 |
31868
9f84ccb1b282
upgrade: drop the prefix to the 'improvement' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31867
diff
changeset
|
39 class improvement(object): |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
40 """Represents an improvement that can be made as part of an upgrade. |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
41 |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
42 The following attributes are defined on each instance: |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
43 |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
44 name |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
45 Machine-readable string uniquely identifying this improvement. It |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
46 will be mapped to an action later in the upgrade process. |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
47 |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
48 type |
46206
9540945e51fd
actions: rename DEFICIENCY constant to FORMAT_VARIANT
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46205
diff
changeset
|
49 Either ``FORMAT_VARIANT`` or ``OPTIMISATION``. |
9540945e51fd
actions: rename DEFICIENCY constant to FORMAT_VARIANT
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46205
diff
changeset
|
50 A format variant is where we change the storage format. Not all format |
9540945e51fd
actions: rename DEFICIENCY constant to FORMAT_VARIANT
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46205
diff
changeset
|
51 variant changes are an obvious problem. |
9540945e51fd
actions: rename DEFICIENCY constant to FORMAT_VARIANT
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46205
diff
changeset
|
52 An optimization is an action (sometimes optional) that |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
53 can be taken to further improve the state of the repository. |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
54 |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
55 description |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
56 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
|
57 including the implications of it. For ``FORMAT_VARIANT`` types, should be |
45994
cfae98c4e1f1
upgrade: capitalize the `deficiency` constant
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45993
diff
changeset
|
58 worded in the present tense. For ``OPTIMISATION`` types, should be |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
59 worded in the future tense. |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
60 |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
61 upgrademessage |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
62 Message intended for humans explaining what an upgrade addressing this |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
63 issue will do. Should be worded in the future tense. |
46213
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
64 |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
65 postupgrademessage |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
66 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
|
67 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
|
68 |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
69 postdowngrademessage |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
70 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
|
71 operation in which this improvement was removed |
46376
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
72 |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
73 touches_filelogs (bool) |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
74 Whether this improvement touches filelogs |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
75 |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
76 touches_manifests (bool) |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
77 Whether this improvement touches manifests |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
78 |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
79 touches_changelog (bool) |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
80 Whether this improvement touches changelog |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
81 |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
82 touches_requirements (bool) |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
83 Whether this improvement changes repository requirements |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
84 """ |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
85 |
32030
e47223576b8d
upgrade: introduce a 'formatvariant' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32029
diff
changeset
|
86 def __init__(self, name, type, description, upgrademessage): |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
87 self.name = name |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
88 self.type = type |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
89 self.description = description |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
90 self.upgrademessage = upgrademessage |
46213
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
91 self.postupgrademessage = None |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
92 self.postdowngrademessage = None |
46376
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
93 # By default for now, we assume every improvement touches |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
94 # all the things |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
95 self.touches_filelogs = True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
96 self.touches_manifests = True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
97 self.touches_changelog = True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
98 self.touches_requirements = True |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
99 |
31902
6557f0d4ab8e
upgrade: implement equality for 'improvement' object
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31901
diff
changeset
|
100 def __eq__(self, other): |
6557f0d4ab8e
upgrade: implement equality for 'improvement' object
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31901
diff
changeset
|
101 if not isinstance(other, improvement): |
6557f0d4ab8e
upgrade: implement equality for 'improvement' object
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31901
diff
changeset
|
102 # This is what python tell use to do |
6557f0d4ab8e
upgrade: implement equality for 'improvement' object
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31901
diff
changeset
|
103 return NotImplemented |
6557f0d4ab8e
upgrade: implement equality for 'improvement' object
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31901
diff
changeset
|
104 return self.name == other.name |
6557f0d4ab8e
upgrade: implement equality for 'improvement' object
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31901
diff
changeset
|
105 |
32028
99f63f476a72
upgrade: implement '__ne__' on 'improvement' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31904
diff
changeset
|
106 def __ne__(self, other): |
40997
038108a9811c
upgrade: correct implementation of improvement.__ne__
Benjamin Peterson <benjamin@python.org>
parents:
40918
diff
changeset
|
107 return not (self == other) |
32028
99f63f476a72
upgrade: implement '__ne__' on 'improvement' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31904
diff
changeset
|
108 |
32029
9e35848fa007
upgrade: implement '__hash__' on 'improvement' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32028
diff
changeset
|
109 def __hash__(self): |
9e35848fa007
upgrade: implement '__hash__' on 'improvement' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32028
diff
changeset
|
110 return hash(self.name) |
9e35848fa007
upgrade: implement '__hash__' on 'improvement' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32028
diff
changeset
|
111 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
112 |
32032
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
113 allformatvariant = [] |
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
114 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
115 |
32032
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
116 def registerformatvariant(cls): |
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
117 allformatvariant.append(cls) |
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
118 return cls |
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
119 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
120 |
32030
e47223576b8d
upgrade: introduce a 'formatvariant' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32029
diff
changeset
|
121 class formatvariant(improvement): |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
122 """an improvement subclass dedicated to repository format""" |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
123 |
46206
9540945e51fd
actions: rename DEFICIENCY constant to FORMAT_VARIANT
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46205
diff
changeset
|
124 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
|
125 ### The following attributes should be defined for each class: |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
126 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
127 # 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
|
128 # 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
|
129 name = None |
32030
e47223576b8d
upgrade: introduce a 'formatvariant' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32029
diff
changeset
|
130 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
131 # 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
|
132 # 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
|
133 # 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
|
134 # 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
|
135 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
|
136 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
137 # 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
|
138 # 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
|
139 upgrademessage = None |
32030
e47223576b8d
upgrade: introduce a 'formatvariant' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32029
diff
changeset
|
140 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
141 # 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
|
142 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
|
143 |
46213
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
144 # 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
|
145 # 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
|
146 postupgrademessage = None |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
147 |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
148 # 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
|
149 # 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
|
150 postdowngrademessage = None |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
151 |
46376
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
152 # By default for now, we assume every improvement touches all the things |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
153 touches_filelogs = True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
154 touches_manifests = True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
155 touches_changelog = True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
156 touches_requirements = True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
157 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
158 def __init__(self): |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
159 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
|
160 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
161 @staticmethod |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
162 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
|
163 """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
|
164 raise NotImplementedError() |
32030
e47223576b8d
upgrade: introduce a 'formatvariant' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32029
diff
changeset
|
165 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
166 @staticmethod |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
167 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
|
168 """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
|
169 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
|
170 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
171 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
172 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
|
173 """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
|
174 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
175 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
|
176 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
|
177 """ |
e47223576b8d
upgrade: introduce a 'formatvariant' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32029
diff
changeset
|
178 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
179 # 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
|
180 _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
|
181 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
182 @staticmethod |
39546
41aa5dced975
localrepo: pass ui to newreporequirements() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39243
diff
changeset
|
183 def _newreporequirements(ui): |
39996
dbcb466d0065
localrepo: define storage backend in creation options (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39870
diff
changeset
|
184 return localrepo.newreporequirements( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
185 ui, localrepo.defaultcreateopts(ui) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
186 ) |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
187 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
188 @classmethod |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
189 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
|
190 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
|
191 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
|
192 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
193 @classmethod |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
194 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
|
195 assert cls._requirement is not None |
39546
41aa5dced975
localrepo: pass ui to newreporequirements() (API)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39243
diff
changeset
|
196 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
|
197 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
198 |
32032
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
199 @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
|
200 class fncache(requirementformatvariant): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
201 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
|
202 |
46638
b4c2a2af25e2
requirements: also add a fncache constant
Raphaël Gomès <rgomes@octobus.net>
parents:
46637
diff
changeset
|
203 _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
|
204 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
205 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
|
206 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
207 description = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
208 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
|
209 b'repository performance is sub-optimal' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
210 ) |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
211 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
212 upgrademessage = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
213 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
|
214 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
|
215 b'operations should be improved' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
216 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
217 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
218 |
32032
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
219 @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
|
220 class dotencode(requirementformatvariant): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
221 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
|
222 |
46636
c3773636ddbb
requirements: also add a dotencode constant
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
223 _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
|
224 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
225 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
|
226 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
227 description = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
228 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
|
229 b'space may not work correctly' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
230 ) |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
231 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
232 upgrademessage = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
233 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
|
234 b'beginning with a space or period' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
235 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
236 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
237 |
32032
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
238 @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
|
239 class generaldelta(requirementformatvariant): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
240 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
|
241 |
46627
f4c325bf80fc
requirements: also add a generaldelta constant
Raphaël Gomès <rgomes@octobus.net>
parents:
46626
diff
changeset
|
242 _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
|
243 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
244 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
|
245 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
246 description = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
247 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
|
248 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
|
249 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
|
250 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
|
251 b'resources, making "hg push" and "hg pull" slower' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
252 ) |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
253 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
254 upgrademessage = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
255 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
|
256 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
|
257 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
|
258 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
|
259 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
|
260 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
|
261 b'faster' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
262 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
263 |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
264 |
32032
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
265 @registerformatvariant |
46047
4b89cf08d8dc
upgrade: split definition and management of the actions from the main code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46046
diff
changeset
|
266 class sharesafe(requirementformatvariant): |
46334
4b0192f592cf
share: move share safe functionality out of experimental
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46230
diff
changeset
|
267 name = b'share-safe' |
46002
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
268 _requirement = requirements.SHARESAFE_REQUIREMENT |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
269 |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
270 default = False |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
271 |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
272 description = _( |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
273 b'old shared repositories do not share source repository ' |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
274 b'requirements and config. This leads to various problems ' |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
275 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:
45997
diff
changeset
|
276 b'extensions are enabled.' |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
277 ) |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
278 |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
279 upgrademessage = _( |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
280 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:
45997
diff
changeset
|
281 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:
45997
diff
changeset
|
282 ) |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
283 |
46213
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
284 postdowngrademessage = _( |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
285 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
|
286 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
|
287 b' be reshared.' |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
288 ) |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
289 |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
290 postupgrademessage = _( |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
291 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
|
292 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
|
293 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
|
294 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
|
295 ) |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
296 |
46377
60ea95471b83
upgrade: mark sharesafe improvement as only touching requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46376
diff
changeset
|
297 # upgrade only needs to change the requirements |
60ea95471b83
upgrade: mark sharesafe improvement as only touching requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46376
diff
changeset
|
298 touches_filelogs = False |
60ea95471b83
upgrade: mark sharesafe improvement as only touching requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46376
diff
changeset
|
299 touches_manifests = False |
60ea95471b83
upgrade: mark sharesafe improvement as only touching requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46376
diff
changeset
|
300 touches_changelog = False |
60ea95471b83
upgrade: mark sharesafe improvement as only touching requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46376
diff
changeset
|
301 touches_requirements = True |
60ea95471b83
upgrade: mark sharesafe improvement as only touching requirements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46376
diff
changeset
|
302 |
46002
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
303 |
705c37f22859
upgrade: add support for experimental safe share mode
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45997
diff
changeset
|
304 @registerformatvariant |
38719
4ad2a1ff0404
upgrade: add information about sparse-revlog
Paul Morelle <paul.morelle@octobus.net>
parents:
38399
diff
changeset
|
305 class sparserevlog(requirementformatvariant): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
306 name = b'sparserevlog' |
38719
4ad2a1ff0404
upgrade: add information about sparse-revlog
Paul Morelle <paul.morelle@octobus.net>
parents:
38399
diff
changeset
|
307 |
45373
d7dcc75a3eae
localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45372
diff
changeset
|
308 _requirement = requirements.SPARSEREVLOG_REQUIREMENT |
38719
4ad2a1ff0404
upgrade: add information about sparse-revlog
Paul Morelle <paul.morelle@octobus.net>
parents:
38399
diff
changeset
|
309 |
40918
3764330f76a6
sparse-revlog: enabled by default
Boris Feld <boris.feld@octobus.net>
parents:
40837
diff
changeset
|
310 default = True |
38719
4ad2a1ff0404
upgrade: add information about sparse-revlog
Paul Morelle <paul.morelle@octobus.net>
parents:
38399
diff
changeset
|
311 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
312 description = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
313 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
|
314 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
|
315 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
|
316 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
|
317 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
|
318 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
|
319 b'exchange.' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
320 ) |
38719
4ad2a1ff0404
upgrade: add information about sparse-revlog
Paul Morelle <paul.morelle@octobus.net>
parents:
38399
diff
changeset
|
321 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
322 upgrademessage = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
323 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
|
324 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
|
325 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
|
326 b'better compression and faster exchange with server.' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
327 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
328 |
38719
4ad2a1ff0404
upgrade: add information about sparse-revlog
Paul Morelle <paul.morelle@octobus.net>
parents:
38399
diff
changeset
|
329 |
4ad2a1ff0404
upgrade: add information about sparse-revlog
Paul Morelle <paul.morelle@octobus.net>
parents:
38399
diff
changeset
|
330 @registerformatvariant |
44799
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44798
diff
changeset
|
331 class persistentnodemap(requirementformatvariant): |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44798
diff
changeset
|
332 name = b'persistent-nodemap' |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44798
diff
changeset
|
333 |
45373
d7dcc75a3eae
localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45372
diff
changeset
|
334 _requirement = requirements.NODEMAP_REQUIREMENT |
44799
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44798
diff
changeset
|
335 |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44798
diff
changeset
|
336 default = False |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44798
diff
changeset
|
337 |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44798
diff
changeset
|
338 description = _( |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44798
diff
changeset
|
339 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:
44798
diff
changeset
|
340 ) |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44798
diff
changeset
|
341 |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44798
diff
changeset
|
342 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:
44798
diff
changeset
|
343 |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44798
diff
changeset
|
344 |
ea9563e9e65a
nodemap: teach `hg debugformat` about the persistent nodemap option
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44798
diff
changeset
|
345 @registerformatvariant |
43138
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
346 class copiessdc(requirementformatvariant): |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
347 name = b'copies-sdc' |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
348 |
45373
d7dcc75a3eae
localrepo: move requirements constant to requirements module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45372
diff
changeset
|
349 _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
|
350 |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
351 default = False |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
352 |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
353 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
|
354 |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
355 upgrademessage = _( |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
356 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
|
357 ) |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
358 |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
359 |
f9dc98a97cdb
sidedatacopies: teach upgrade about the new requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43135
diff
changeset
|
360 @registerformatvariant |
46705
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
361 class revlogv2(requirementformatvariant): |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
362 name = b'revlog-v2' |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
363 _requirement = requirements.REVLOGV2_REQUIREMENT |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
364 default = False |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
365 description = _(b'Version 2 of the revlog.') |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
366 upgrademessage = _(b'very experimental') |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
367 |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
368 |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
369 @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
|
370 class removecldeltachain(formatvariant): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
371 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
|
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 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
|
374 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
375 description = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
376 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
|
377 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
|
378 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
|
379 b'than they could be' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
380 ) |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
381 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
382 upgrademessage = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
383 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
|
384 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
|
385 b'faster; changelog size may be reduced' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
386 ) |
32031
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
387 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
388 @staticmethod |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
389 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
|
390 # 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
|
391 # 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
|
392 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
|
393 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
|
394 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
|
395 |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
396 @staticmethod |
11a2461fc9b1
upgrade: move descriptions and selection logic in individual classes
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32030
diff
changeset
|
397 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
|
398 return True |
32030
e47223576b8d
upgrade: introduce a 'formatvariant' class
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32029
diff
changeset
|
399 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
400 |
46874
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
401 _has_zstd = ( |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
402 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
|
403 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
|
404 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
|
405 ) |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
406 |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
407 |
35340
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35335
diff
changeset
|
408 @registerformatvariant |
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35335
diff
changeset
|
409 class compressionengine(formatvariant): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
410 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
|
411 |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
412 if _has_zstd: |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
413 default = b'zstd' |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
414 else: |
84a93fa7ecfd
revlog-compression: use zstd by default (if available)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46851
diff
changeset
|
415 default = b'zlib' |
35340
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35335
diff
changeset
|
416 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
417 description = _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
418 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
|
419 b'Some engine are faster than other' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
420 ) |
35340
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35335
diff
changeset
|
421 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
422 upgrademessage = _( |
43117
8ff1ecfadcd1
cleanup: join string literals that are already on one line
Martin von Zweigbergk <martinvonz@google.com>
parents:
43089
diff
changeset
|
423 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
|
424 ) |
35340
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35335
diff
changeset
|
425 |
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35335
diff
changeset
|
426 @classmethod |
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35335
diff
changeset
|
427 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
|
428 # 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
|
429 # 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
|
430 # |
10a6725dca6e
compression: introduce an official `zstd-revlog` requirement
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42046
diff
changeset
|
431 # 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
|
432 compression = b'zlib' |
35340
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35335
diff
changeset
|
433 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
|
434 prefix = req.startswith |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
435 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
|
436 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
|
437 return compression |
35340
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35335
diff
changeset
|
438 |
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35335
diff
changeset
|
439 @classmethod |
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35335
diff
changeset
|
440 def fromconfig(cls, repo): |
44382
f0027a3dd7cb
revlog-compression: update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43805
diff
changeset
|
441 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:
43805
diff
changeset
|
442 # 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:
43805
diff
changeset
|
443 for comp in compengines: |
f0027a3dd7cb
revlog-compression: update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43805
diff
changeset
|
444 if comp in util.compengines: |
46851
3aa78f2aea48
revlog-compression: fix computation of engine availability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46706
diff
changeset
|
445 e = util.compengines[comp] |
3aa78f2aea48
revlog-compression: fix computation of engine availability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46706
diff
changeset
|
446 if e.available() and e.revlogheader(): |
3aa78f2aea48
revlog-compression: fix computation of engine availability
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46706
diff
changeset
|
447 return comp |
44382
f0027a3dd7cb
revlog-compression: update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43805
diff
changeset
|
448 |
f0027a3dd7cb
revlog-compression: update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43805
diff
changeset
|
449 # 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:
43805
diff
changeset
|
450 return b','.join(compengines) |
35340
ead01b74be04
upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net>
parents:
35335
diff
changeset
|
451 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
452 |
42045
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
453 @registerformatvariant |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
454 class compressionlevel(formatvariant): |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
455 name = b'compression-level' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
456 default = b'default' |
42045
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
457 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
458 description = _(b'compression level') |
42045
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
459 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
460 upgrademessage = _(b'revlog content will be recompressed') |
42045
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
461 |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
462 @classmethod |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
463 def fromrepo(cls, repo): |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
464 comp = compressionengine.fromrepo(repo) |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
465 level = None |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
466 if comp == b'zlib': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
467 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
|
468 elif comp == b'zstd': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
469 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:
41089
diff
changeset
|
470 if level is None: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
471 return b'default' |
42045
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
472 return bytes(level) |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
473 |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
474 @classmethod |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
475 def fromconfig(cls, repo): |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
476 comp = compressionengine.fromconfig(repo) |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
477 level = None |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
478 if comp == b'zlib': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
479 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
|
480 elif comp == b'zstd': |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
481 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:
41089
diff
changeset
|
482 if level is None: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
483 return b'default' |
42045
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
484 return bytes(level) |
d7e751ec679e
compression: display compression level in debugformat
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41089
diff
changeset
|
485 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
486 |
46205
53d083fa1f83
upgrade: rename finddeficiences() to find_format_upgrades()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46192
diff
changeset
|
487 def find_format_upgrades(repo): |
53d083fa1f83
upgrade: rename finddeficiences() to find_format_upgrades()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46192
diff
changeset
|
488 """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
|
489 upgrades = [] |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
490 |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
491 # 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
|
492 # 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
|
493 # requirements, so let's not bother. |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
494 |
32032
189778a06743
upgrade: register all format variants in a list
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
32031
diff
changeset
|
495 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
|
496 if not fv.fromrepo(repo): |
46205
53d083fa1f83
upgrade: rename finddeficiences() to find_format_upgrades()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46192
diff
changeset
|
497 upgrades.append(fv) |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
498 |
46205
53d083fa1f83
upgrade: rename finddeficiences() to find_format_upgrades()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46192
diff
changeset
|
499 return upgrades |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
500 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
501 |
46212
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
502 def find_format_downgrades(repo): |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
503 """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
|
504 because of disabled config option for them""" |
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 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 for fv in allformatvariant: |
46230
1fcab88ab85c
downgrade: if a compression is removed, consider that too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46218
diff
changeset
|
509 if fv.name == b'compression': |
1fcab88ab85c
downgrade: if a compression is removed, consider that too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46218
diff
changeset
|
510 # 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
|
511 # 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
|
512 # 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
|
513 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
|
514 downgrades.append(fv) |
1fcab88ab85c
downgrade: if a compression is removed, consider that too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46218
diff
changeset
|
515 continue |
46212
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
516 # 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
|
517 # config |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
518 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
|
519 downgrades.append(fv) |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
520 |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
521 return downgrades |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
522 |
c97d8e0406a6
actions: introduce function to calculate downgrades
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
523 |
45995
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
524 ALL_OPTIMISATIONS = [] |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
525 |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
526 |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
527 def register_optimization(obj): |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
528 ALL_OPTIMISATIONS.append(obj) |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
529 return obj |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
530 |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
531 |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
532 register_optimization( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
533 improvement( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
534 name=b're-delta-parent', |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
535 type=OPTIMISATION, |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
536 description=_( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
537 b'deltas within internal storage will be recalculated to ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
538 b'choose an optimal base revision where this was not ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
539 b'already done; the size of the repository may shrink and ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
540 b'various operations may become faster; the first time ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
541 b'this optimization is performed could slow down upgrade ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
542 b'execution considerably; subsequent invocations should ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
543 b'not run noticeably slower' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
544 ), |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
545 upgrademessage=_( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
546 b'deltas within internal storage will choose a new ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
547 b'base revision if needed' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
548 ), |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
549 ) |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
550 ) |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
551 |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
552 register_optimization( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
553 improvement( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
554 name=b're-delta-multibase', |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
555 type=OPTIMISATION, |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
556 description=_( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
557 b'deltas within internal storage will be recalculated ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
558 b'against multiple base revision and the smallest ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
559 b'difference will be used; the size of the repository may ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
560 b'shrink significantly when there are many merges; this ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
561 b'optimization will slow down execution in proportion to ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
562 b'the number of merges in the repository and the amount ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
563 b'of files in the repository; this slow down should not ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
564 b'be significant unless there are tens of thousands of ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
565 b'files and thousands of merges' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
566 ), |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
567 upgrademessage=_( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
568 b'deltas within internal storage will choose an ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
569 b'optimal delta by computing deltas against multiple ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
570 b'parents; may slow down execution time ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
571 b'significantly' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
572 ), |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
573 ) |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
574 ) |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
575 |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
576 register_optimization( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
577 improvement( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
578 name=b're-delta-all', |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
579 type=OPTIMISATION, |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
580 description=_( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
581 b'deltas within internal storage will always be ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
582 b'recalculated without reusing prior deltas; this will ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
583 b'likely make execution run several times slower; this ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
584 b'optimization is typically not needed' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
585 ), |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
586 upgrademessage=_( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
587 b'deltas within internal storage will be fully ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
588 b'recomputed; this will likely drastically slow down ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
589 b'execution time' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
590 ), |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
591 ) |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
592 ) |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
593 |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
594 register_optimization( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
595 improvement( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
596 name=b're-delta-fulladd', |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
597 type=OPTIMISATION, |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
598 description=_( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
599 b'every revision will be re-added as if it was new ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
600 b'content. It will go through the full storage ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
601 b'mechanism giving extensions a chance to process it ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
602 b'(eg. lfs). This is similar to "re-delta-all" but even ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
603 b'slower since more logic is involved.' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
604 ), |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
605 upgrademessage=_( |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
606 b'each revision will be added as new content to the ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
607 b'internal storage; this will likely drastically slow ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
608 b'down execution time, but some extensions might need ' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
609 b'it' |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
610 ), |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
611 ) |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
612 ) |
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
613 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
614 |
31896
127b41e975fd
upgrade: split finding deficiencies from finding optimisations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31895
diff
changeset
|
615 def findoptimizations(repo): |
127b41e975fd
upgrade: split finding deficiencies from finding optimisations
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31895
diff
changeset
|
616 """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
|
617 # 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
|
618 # which ones to apply. |
45995
32dcd783a985
upgrade: move optimisation to something more declarative
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45994
diff
changeset
|
619 return list(ALL_OPTIMISATIONS) |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
620 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
621 |
46210
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
622 def determine_upgrade_actions( |
46209
a51d345f1404
upgrade: move optimization addition to determineactions()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46206
diff
changeset
|
623 repo, format_upgrades, optimizations, sourcereqs, destreqs |
a51d345f1404
upgrade: move optimization addition to determineactions()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46206
diff
changeset
|
624 ): |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
625 """Determine upgrade actions that will be performed. |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
626 |
46205
53d083fa1f83
upgrade: rename finddeficiences() to find_format_upgrades()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46192
diff
changeset
|
627 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
|
628 ``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
|
629 will be performed. |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
630 |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
631 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
|
632 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
|
633 etc. |
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 Returns a list of action names. |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
636 """ |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
637 newactions = [] |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
638 |
46205
53d083fa1f83
upgrade: rename finddeficiences() to find_format_upgrades()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46192
diff
changeset
|
639 for d in format_upgrades: |
44746
c36a3fcfc36b
upgrade: properly filter action depending on planned work
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44452
diff
changeset
|
640 name = d._requirement |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
641 |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
642 # 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
|
643 # destination requirements, prune the action. |
44746
c36a3fcfc36b
upgrade: properly filter action depending on planned work
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44452
diff
changeset
|
644 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
|
645 continue |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
646 |
31903
fa1088de2119
upgrade: use 'improvement' object for action too
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31902
diff
changeset
|
647 newactions.append(d) |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
648 |
46209
a51d345f1404
upgrade: move optimization addition to determineactions()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46206
diff
changeset
|
649 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
|
650 |
30776
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
651 # 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
|
652 # 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
|
653 |
3997edc4a86d
repair: determine what upgrade will do
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30775
diff
changeset
|
654 return newactions |
46048
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
655 |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
656 |
46056
c407513a44a3
upgrade: start moving the "to be happening" data in a dedicated object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
657 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:
46052
diff
changeset
|
658 """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:
46052
diff
changeset
|
659 |
46191
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
660 def __init__( |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
661 self, |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
662 ui, |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
663 new_requirements, |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
664 current_requirements, |
46210
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
665 upgrade_actions, |
46213
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
666 removed_actions, |
46191
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
667 revlogs_to_process, |
46375
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46334
diff
changeset
|
668 backup_store, |
46191
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
669 ): |
46188
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46056
diff
changeset
|
670 self.ui = ui |
46191
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
671 self.new_requirements = new_requirements |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
672 self.current_requirements = current_requirements |
46210
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
673 # list of upgrade actions the operation will perform |
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
674 self.upgrade_actions = upgrade_actions |
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
675 self._upgrade_actions_names = set([a.name for a in 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 |
46056
c407513a44a3
upgrade: start moving the "to be happening" data in a dedicated object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
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 ] |
46056
c407513a44a3
upgrade: start moving the "to be happening" data in a dedicated object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
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 |
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
698 self.delta_reuse_mode = revlog.revlog.DELTAREUSEALWAYS |
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
699 if b're-delta-all' in self._upgrade_actions_names: |
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
700 self.delta_reuse_mode = revlog.revlog.DELTAREUSENEVER |
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
701 elif b're-delta-parent' in self._upgrade_actions_names: |
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
702 self.delta_reuse_mode = revlog.revlog.DELTAREUSESAMEREVS |
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
703 elif b're-delta-multibase' in self._upgrade_actions_names: |
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
704 self.delta_reuse_mode = revlog.revlog.DELTAREUSESAMEREVS |
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
705 elif b're-delta-fulladd' in self._upgrade_actions_names: |
82f3ee1a505f
actions: store deltareuse mode of whole operation in UpgradeOperation
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46213
diff
changeset
|
706 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
|
707 |
46218
3f92a9bb80f0
engine: prevent multiple checking of re-delta-multibase
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46215
diff
changeset
|
708 # 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
|
709 self.force_re_delta_both_parents = ( |
3f92a9bb80f0
engine: prevent multiple checking of re-delta-multibase
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46215
diff
changeset
|
710 b're-delta-multibase' in self._upgrade_actions_names |
3f92a9bb80f0
engine: prevent multiple checking of re-delta-multibase
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46215
diff
changeset
|
711 ) |
3f92a9bb80f0
engine: prevent multiple checking of re-delta-multibase
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46215
diff
changeset
|
712 |
46375
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46334
diff
changeset
|
713 # 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
|
714 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
|
715 |
46376
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
716 # whether the operation touches different revlogs at all or not |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
717 self.touches_filelogs = self._touches_filelogs() |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
718 self.touches_manifests = self._touches_manifests() |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
719 self.touches_changelog = self._touches_changelog() |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
720 # whether the operation touches requirements file or not |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
721 self.touches_requirements = self._touches_requirements() |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
722 self.touches_store = ( |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
723 self.touches_filelogs |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
724 or self.touches_manifests |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
725 or self.touches_changelog |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
726 ) |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
727 # does the operation only touches repository requirement |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
728 self.requirements_only = ( |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
729 self.touches_requirements and not self.touches_store |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
730 ) |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
731 |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
732 def _touches_filelogs(self): |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
733 for a in self.upgrade_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
734 # in optimisations, we re-process the revlogs again |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
735 if a.type == OPTIMISATION: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
736 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
737 elif a.touches_filelogs: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
738 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
739 for a in self.removed_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
740 if a.touches_filelogs: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
741 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
742 return False |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
743 |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
744 def _touches_manifests(self): |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
745 for a in self.upgrade_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
746 # in optimisations, we re-process the revlogs again |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
747 if a.type == OPTIMISATION: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
748 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
749 elif a.touches_manifests: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
750 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
751 for a in self.removed_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
752 if a.touches_manifests: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
753 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
754 return False |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
755 |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
756 def _touches_changelog(self): |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
757 for a in self.upgrade_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
758 # in optimisations, we re-process the revlogs again |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
759 if a.type == OPTIMISATION: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
760 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
761 elif a.touches_changelog: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
762 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
763 for a in self.removed_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
764 if a.touches_changelog: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
765 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
766 return False |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
767 |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
768 def _touches_requirements(self): |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
769 for a in self.upgrade_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
770 # 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:
46375
diff
changeset
|
771 # in a requirement being added or removed |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
772 if a.type == OPTIMISATION: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
773 pass |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
774 elif a.touches_requirements: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
775 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
776 for a in self.removed_actions: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
777 if a.touches_requirements: |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
778 return True |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
779 |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
780 return False |
a83e1496d943
actions: calculate what all parts does the operation touches
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
781 |
46190
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
782 def _write_labeled(self, l, label): |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
783 """ |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
784 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
|
785 """ |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
786 first = True |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
787 for r in sorted(l): |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
788 if not first: |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
789 self.ui.write(b', ') |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
790 self.ui.write(r, label=label) |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
791 first = False |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
792 |
46191
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
793 def print_requirements(self): |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
794 self.ui.write(_(b'requirements\n')) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
795 self.ui.write(_(b' preserved: ')) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
796 self._write_labeled( |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
797 self._preserved_requirements, "upgrade-repo.requirement.preserved" |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
798 ) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
799 self.ui.write((b'\n')) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
800 if self._removed_requirements: |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
801 self.ui.write(_(b' removed: ')) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
802 self._write_labeled( |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
803 self._removed_requirements, "upgrade-repo.requirement.removed" |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
804 ) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
805 self.ui.write((b'\n')) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
806 if self._added_requirements: |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
807 self.ui.write(_(b' added: ')) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
808 self._write_labeled( |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
809 self._added_requirements, "upgrade-repo.requirement.added" |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
810 ) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
811 self.ui.write((b'\n')) |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
812 self.ui.write(b'\n') |
aba979b1b90b
upgrade: move `printrequirements()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46190
diff
changeset
|
813 |
46190
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
814 def print_optimisations(self): |
46210
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
815 optimisations = [ |
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
816 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
|
817 ] |
46190
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
818 optimisations.sort(key=lambda a: a.name) |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
819 if optimisations: |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
820 self.ui.write(_(b'optimisations: ')) |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
821 self._write_labeled( |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
822 [a.name for a in optimisations], |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
823 "upgrade-repo.optimisation.performed", |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
824 ) |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
825 self.ui.write(b'\n\n') |
9ab2ab5bf9af
upgrade: move `printoptimisations() to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46189
diff
changeset
|
826 |
46189
dfddcbb0c244
upgrade: move `printupgradeactions()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46188
diff
changeset
|
827 def print_upgrade_actions(self): |
46210
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
828 for a in self.upgrade_actions: |
46189
dfddcbb0c244
upgrade: move `printupgradeactions()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46188
diff
changeset
|
829 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
|
830 |
46188
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46056
diff
changeset
|
831 def print_affected_revlogs(self): |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46056
diff
changeset
|
832 if not self.revlogs_to_process: |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46056
diff
changeset
|
833 self.ui.write((b'no revlogs to process\n')) |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46056
diff
changeset
|
834 else: |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46056
diff
changeset
|
835 self.ui.write((b'processed revlogs:\n')) |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46056
diff
changeset
|
836 for r in sorted(self.revlogs_to_process): |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46056
diff
changeset
|
837 self.ui.write((b' - %s\n' % r)) |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46056
diff
changeset
|
838 self.ui.write((b'\n')) |
945b33a7edfd
upgrade: move `print_affected_revlogs()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46056
diff
changeset
|
839 |
46192
25d11b24dedf
upgrade: move printing of unused optimizations to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
840 def print_unused_optimizations(self): |
25d11b24dedf
upgrade: move printing of unused optimizations to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
841 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
|
842 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
|
843 |
46210
6b40aac4da8e
upgrade: rename actions to upgrade_actions
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46209
diff
changeset
|
844 def has_upgrade_action(self, name): |
46189
dfddcbb0c244
upgrade: move `printupgradeactions()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46188
diff
changeset
|
845 """ 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
|
846 return name in self._upgrade_actions_names |
46189
dfddcbb0c244
upgrade: move `printupgradeactions()` to UpgradeOperation class
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46188
diff
changeset
|
847 |
46213
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
848 def print_post_op_messages(self): |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
849 """ print post upgrade operation warning messages """ |
30310886d423
upgrade: introduce post upgrade and downgrade message for improvements
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46212
diff
changeset
|
850 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
|
851 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
|
852 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
|
853 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
|
854 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
|
855 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
|
856 |
46056
c407513a44a3
upgrade: start moving the "to be happening" data in a dedicated object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46052
diff
changeset
|
857 |
46049
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
858 ### 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:
46048
diff
changeset
|
859 |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
860 |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
861 def requiredsourcerequirements(repo): |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
862 """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:
46048
diff
changeset
|
863 |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
864 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:
46048
diff
changeset
|
865 requirements returned by this function. |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
866 """ |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
867 return { |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
868 # Introduced in Mercurial 0.9.2. |
46637
ab58098bebed
requirements: also add a store constant
Raphaël Gomès <rgomes@octobus.net>
parents:
46636
diff
changeset
|
869 requirements.STORE_REQUIREMENT, |
46049
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
870 } |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
871 |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
872 |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
873 def blocksourcerequirements(repo): |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
874 """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:
46048
diff
changeset
|
875 |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
876 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:
46048
diff
changeset
|
877 requirements in the returned set. |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
878 """ |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
879 return { |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
880 # 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:
46048
diff
changeset
|
881 # This is an artificial limitation. |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
882 requirements.TREEMANIFEST_REQUIREMENT, |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
883 # 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:
46048
diff
changeset
|
884 # 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:
46048
diff
changeset
|
885 b'parentdelta', |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
886 # 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:
46048
diff
changeset
|
887 requirements.SHARED_REQUIREMENT, |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
888 } |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
889 |
a2a59cde9b9f
upgrade: gather code about source checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46048
diff
changeset
|
890 |
46705
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
891 def check_revlog_version(reqs): |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
892 """Check that the requirements contain at least one Revlog version""" |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
893 all_revlogs = { |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
894 requirements.REVLOGV1_REQUIREMENT, |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
895 requirements.REVLOGV2_REQUIREMENT, |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
896 } |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
897 if not all_revlogs.intersection(reqs): |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
898 msg = _(b'cannot upgrade repository; missing a revlog version') |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
899 raise error.Abort(msg) |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
900 |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
901 |
46048
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
902 def check_source_requirements(repo): |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
903 """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:
46047
diff
changeset
|
904 |
46705
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
905 check_revlog_version(repo.requirements) |
46048
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
906 required = requiredsourcerequirements(repo) |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
907 missingreqs = required - repo.requirements |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
908 if missingreqs: |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
909 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:
46047
diff
changeset
|
910 missingreqs = b', '.join(sorted(missingreqs)) |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
911 raise error.Abort(msg % missingreqs) |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
912 |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
913 blocking = blocksourcerequirements(repo) |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
914 blockingreqs = blocking & repo.requirements |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
915 if blockingreqs: |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
916 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:
46047
diff
changeset
|
917 blockingreqs = b', '.join(sorted(blockingreqs)) |
f4f956342cf1
upgrade: move requirements checking in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46047
diff
changeset
|
918 raise error.Abort(m % blockingreqs) |
46051
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
919 |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
920 |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
921 ### 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:
46049
diff
changeset
|
922 |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
923 |
46052
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
924 def supportremovedrequirements(repo): |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
925 """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:
46051
diff
changeset
|
926 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
927 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:
46051
diff
changeset
|
928 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:
46051
diff
changeset
|
929 to be allowed. |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
930 """ |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
931 supported = { |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
932 requirements.SPARSEREVLOG_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
933 requirements.SIDEDATA_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
934 requirements.COPIESSDC_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
935 requirements.NODEMAP_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
936 requirements.SHARESAFE_REQUIREMENT, |
46705
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
937 requirements.REVLOGV2_REQUIREMENT, |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
938 requirements.REVLOGV1_REQUIREMENT, |
46052
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
939 } |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
940 for name in compression.compengines: |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
941 engine = compression.compengines[name] |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
942 if engine.available() and engine.revlogheader(): |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
943 supported.add(b'exp-compression-%s' % name) |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
944 if engine.name() == b'zstd': |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
945 supported.add(b'revlog-compression-zstd') |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
946 return supported |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
947 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
948 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
949 def supporteddestrequirements(repo): |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
950 """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:
46051
diff
changeset
|
951 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
952 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:
46051
diff
changeset
|
953 the upgrade is disallowed. |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
954 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
955 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:
46051
diff
changeset
|
956 """ |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
957 supported = { |
46636
c3773636ddbb
requirements: also add a dotencode constant
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
958 requirements.DOTENCODE_REQUIREMENT, |
46638
b4c2a2af25e2
requirements: also add a fncache constant
Raphaël Gomès <rgomes@octobus.net>
parents:
46637
diff
changeset
|
959 requirements.FNCACHE_REQUIREMENT, |
46627
f4c325bf80fc
requirements: also add a generaldelta constant
Raphaël Gomès <rgomes@octobus.net>
parents:
46626
diff
changeset
|
960 requirements.GENERALDELTA_REQUIREMENT, |
46705
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
961 requirements.REVLOGV1_REQUIREMENT, # allowed in case of downgrade |
46637
ab58098bebed
requirements: also add a store constant
Raphaël Gomès <rgomes@octobus.net>
parents:
46636
diff
changeset
|
962 requirements.STORE_REQUIREMENT, |
46052
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
963 requirements.SPARSEREVLOG_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
964 requirements.SIDEDATA_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
965 requirements.COPIESSDC_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
966 requirements.NODEMAP_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
967 requirements.SHARESAFE_REQUIREMENT, |
46705
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
968 requirements.REVLOGV2_REQUIREMENT, |
46052
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
969 } |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
970 for name in compression.compengines: |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
971 engine = compression.compengines[name] |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
972 if engine.available() and engine.revlogheader(): |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
973 supported.add(b'exp-compression-%s' % name) |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
974 if engine.name() == b'zstd': |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
975 supported.add(b'revlog-compression-zstd') |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
976 return supported |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
977 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
978 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
979 def allowednewrequirements(repo): |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
980 """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:
46051
diff
changeset
|
981 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
982 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:
46051
diff
changeset
|
983 they weren't present before. |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
984 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
985 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:
46051
diff
changeset
|
986 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:
46051
diff
changeset
|
987 future, unknown requirements from accidentally being added. |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
988 """ |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
989 supported = { |
46636
c3773636ddbb
requirements: also add a dotencode constant
Raphaël Gomès <rgomes@octobus.net>
parents:
46627
diff
changeset
|
990 requirements.DOTENCODE_REQUIREMENT, |
46638
b4c2a2af25e2
requirements: also add a fncache constant
Raphaël Gomès <rgomes@octobus.net>
parents:
46637
diff
changeset
|
991 requirements.FNCACHE_REQUIREMENT, |
46627
f4c325bf80fc
requirements: also add a generaldelta constant
Raphaël Gomès <rgomes@octobus.net>
parents:
46626
diff
changeset
|
992 requirements.GENERALDELTA_REQUIREMENT, |
46052
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
993 requirements.SPARSEREVLOG_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
994 requirements.SIDEDATA_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
995 requirements.COPIESSDC_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
996 requirements.NODEMAP_REQUIREMENT, |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
997 requirements.SHARESAFE_REQUIREMENT, |
46705
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
998 requirements.REVLOGV1_REQUIREMENT, |
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
999 requirements.REVLOGV2_REQUIREMENT, |
46052
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
1000 } |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
1001 for name in compression.compengines: |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
1002 engine = compression.compengines[name] |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
1003 if engine.available() and engine.revlogheader(): |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
1004 supported.add(b'exp-compression-%s' % name) |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
1005 if engine.name() == b'zstd': |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
1006 supported.add(b'revlog-compression-zstd') |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
1007 return supported |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
1008 |
08802795ae90
upgrade: gather code about requirement checking together
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46051
diff
changeset
|
1009 |
46051
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
1010 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:
46049
diff
changeset
|
1011 old_reqs = repo.requirements |
46705
fd55a9eb1507
revlogv2: allow upgrading to v2
Raphaël Gomès <rgomes@octobus.net>
parents:
46638
diff
changeset
|
1012 check_revlog_version(repo.requirements) |
46051
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
1013 support_removal = supportremovedrequirements(repo) |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
1014 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:
46049
diff
changeset
|
1015 if no_remove_reqs: |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
1016 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:
46049
diff
changeset
|
1017 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:
46049
diff
changeset
|
1018 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:
46049
diff
changeset
|
1019 |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
1020 support_addition = allowednewrequirements(repo) |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
1021 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:
46049
diff
changeset
|
1022 if no_add_reqs: |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
1023 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:
46049
diff
changeset
|
1024 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:
46049
diff
changeset
|
1025 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:
46049
diff
changeset
|
1026 |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
1027 supported = supporteddestrequirements(repo) |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
1028 unsupported_reqs = new_reqs - supported |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
1029 if unsupported_reqs: |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
1030 msg = _( |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
1031 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:
46049
diff
changeset
|
1032 b'requirement: %s' |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
1033 ) |
72b7b4bf3e65
upgrade: extract the checking of target requirements change
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46049
diff
changeset
|
1034 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:
46049
diff
changeset
|
1035 raise error.Abort(msg % unsupported_reqs) |