Mercurial > hg
annotate mercurial/upgrade_utils/engine.py @ 51510:a2f1d97e5284 stable
sshpeer: fix path when handling invalid url exception
In 73ed1d13c0bf the code was refactored but the error handling seems to have
been missed (or maybe the object shoud have implemented __bytes__)
author | Felipe Resende <felipe@fcresende.dev.br> |
---|---|
date | Sat, 16 Mar 2024 18:37:07 -0300 |
parents | 18c8c18993f0 |
children | f4733654f144 |
rev | line source |
---|---|
31894
9379689b6c10
upgrade: update the header comment
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31893
diff
changeset
|
1 # upgrade.py - functions for in place upgrade of Mercurial repository |
4702
18e91c9def0c
strip: move strip code to a new repair module
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
2 # |
31895
783b4c9bd5f5
upgrade: update the copyright statement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31894
diff
changeset
|
3 # Copyright (c) 2016-present, Gregory Szorc |
4702
18e91c9def0c
strip: move strip code to a new repair module
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
4 # |
8225
46293a0c7e9f
updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents:
8073
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
10263 | 6 # GNU General Public License version 2 or any later version. |
4702
18e91c9def0c
strip: move strip code to a new repair module
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
7 |
25970
d1419cfbd4f4
repair: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25874
diff
changeset
|
8 |
30780
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
9 import stat |
4702
18e91c9def0c
strip: move strip code to a new repair module
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
10 |
46046
f105c49e89cd
upgrade: split actual upgrade code away from the main module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46035
diff
changeset
|
11 from ..i18n import _ |
f105c49e89cd
upgrade: split actual upgrade code away from the main module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46035
diff
changeset
|
12 from .. import ( |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26425
diff
changeset
|
13 error, |
44940
4c1d39215034
metadata: move computation related to files touched in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44841
diff
changeset
|
14 metadata, |
38165
2ce60954b1b7
py3: wrap tempfile.mkdtemp() to use bytes path
Yuya Nishihara <yuya@tcha.org>
parents:
37444
diff
changeset
|
15 pycompat, |
45372
77b8588dd84e
requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45371
diff
changeset
|
16 requirements, |
30777
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
17 scmutil, |
46896
cf49e54ef965
upgrade: take advantage of the new information returned by `store.walk`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46895
diff
changeset
|
18 store, |
25970
d1419cfbd4f4
repair: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25874
diff
changeset
|
19 util, |
31232
254f98326eef
vfs: use 'vfs' module directly in 'mercurial.repair'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30975
diff
changeset
|
20 vfs as vfsmod, |
25970
d1419cfbd4f4
repair: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25874
diff
changeset
|
21 ) |
47084
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
22 from ..revlogutils import ( |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
23 constants as revlogconst, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
24 flagutil, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
25 nodemap, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
26 sidedata as sidedatamod, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
27 ) |
47320
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
28 from . import actions as upgrade_actions |
47084
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
29 |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
30 |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
31 def get_sidedata_helpers(srcrepo, dstrepo): |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
32 use_w = srcrepo.ui.configbool(b'experimental', b'worker.repository-upgrade') |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
33 sequential = pycompat.iswindows or not use_w |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
34 if not sequential: |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
35 srcrepo.register_sidedata_computer( |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
36 revlogconst.KIND_CHANGELOG, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
37 sidedatamod.SD_FILES, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
38 (sidedatamod.SD_FILES,), |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
39 metadata._get_worker_sidedata_adder(srcrepo, dstrepo), |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
40 flagutil.REVIDX_HASCOPIESINFO, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
41 replace=True, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
42 ) |
47085
3aab2330b7d3
sidedata: move sidedata-related utils to the dedicated module
Raphaël Gomès <rgomes@octobus.net>
parents:
47084
diff
changeset
|
43 return sidedatamod.get_sidedata_helpers(srcrepo, dstrepo._wanted_sidedata) |
25970
d1419cfbd4f4
repair: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25874
diff
changeset
|
44 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
45 |
50490
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
46 def _copyrevlog(tr, destrepo, oldrl, entry): |
42691
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
47 """copy all relevant files for `oldrl` into `destrepo` store |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
48 |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
49 Files are copied "as is" without any transformation. The copy is performed |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
50 without extra checks. Callers are responsible for making sure the copied |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
51 content is compatible with format of the destination repository. |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
52 """ |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
53 oldrl = getattr(oldrl, '_revlog', oldrl) |
50627
e1ee6910f6bc
store: add a `get_revlog_instance` method on revlog entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50503
diff
changeset
|
54 newrl = entry.get_revlog_instance(destrepo) |
42691
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
55 newrl = getattr(newrl, '_revlog', newrl) |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
56 |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
57 oldvfs = oldrl.opener |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
58 newvfs = newrl.opener |
47148
a07d5cb03a85
revlog: rename `indexfile` to `_indexfile`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47128
diff
changeset
|
59 oldindex = oldvfs.join(oldrl._indexfile) |
a07d5cb03a85
revlog: rename `indexfile` to `_indexfile`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47128
diff
changeset
|
60 newindex = newvfs.join(newrl._indexfile) |
47149
396442cd7e6a
revlog: rename `datafile` to `datafile`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47148
diff
changeset
|
61 olddata = oldvfs.join(oldrl._datafile) |
396442cd7e6a
revlog: rename `datafile` to `datafile`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47148
diff
changeset
|
62 newdata = newvfs.join(newrl._datafile) |
42691
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
63 |
47148
a07d5cb03a85
revlog: rename `indexfile` to `_indexfile`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47128
diff
changeset
|
64 with newvfs(newrl._indexfile, b'w'): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
65 pass # create all the directories |
42691
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
66 |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
67 util.copyfile(oldindex, newindex) |
47149
396442cd7e6a
revlog: rename `datafile` to `datafile`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47148
diff
changeset
|
68 copydata = oldrl.opener.exists(oldrl._datafile) |
43002
373749982924
upgrade: also register copied `.d` files to fncache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43000
diff
changeset
|
69 if copydata: |
42691
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
70 util.copyfile(olddata, newdata) |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
71 |
50502
e4186ddab473
store: use the new boolean property in `upgrade`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50496
diff
changeset
|
72 if entry.is_filelog: |
50492
3473d18c029a
store: introduce a main_file_path method for revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50491
diff
changeset
|
73 unencodedname = entry.main_file_path() |
42691
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
74 destrepo.svfs.fncache.add(unencodedname) |
43002
373749982924
upgrade: also register copied `.d` files to fncache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43000
diff
changeset
|
75 if copydata: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
76 destrepo.svfs.fncache.add(unencodedname[:-2] + b'.d') |
42691
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42690
diff
changeset
|
77 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
78 |
46035
6c960b708ac4
upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46003
diff
changeset
|
79 UPGRADE_CHANGELOG = b"changelog" |
6c960b708ac4
upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46003
diff
changeset
|
80 UPGRADE_MANIFEST = b"manifest" |
6c960b708ac4
upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46003
diff
changeset
|
81 UPGRADE_FILELOGS = b"all-filelogs" |
42693
0812d9fb63fe
upgrade: introduce the internal code for revlog cloning selection
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42691
diff
changeset
|
82 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
83 UPGRADE_ALL_REVLOGS = frozenset( |
45980
fe7d7917ceb5
upgrade: rename UPGRADE_FILELOG to UPGRADE_FILELOGS
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45735
diff
changeset
|
84 [UPGRADE_CHANGELOG, UPGRADE_MANIFEST, UPGRADE_FILELOGS] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
85 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
86 |
42693
0812d9fb63fe
upgrade: introduce the internal code for revlog cloning selection
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42691
diff
changeset
|
87 |
50503
aede57466804
store: use boolean property for upgrade's matchrevlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50502
diff
changeset
|
88 def matchrevlog(revlogfilter, entry): |
45694
d1c10d33a85c
upgrade: improve documentation of matchrevlog()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45487
diff
changeset
|
89 """check if a revlog is selected for cloning. |
d1c10d33a85c
upgrade: improve documentation of matchrevlog()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45487
diff
changeset
|
90 |
d1c10d33a85c
upgrade: improve documentation of matchrevlog()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45487
diff
changeset
|
91 In other words, are there any updates which need to be done on revlog |
d1c10d33a85c
upgrade: improve documentation of matchrevlog()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45487
diff
changeset
|
92 or it can be blindly copied. |
42693
0812d9fb63fe
upgrade: introduce the internal code for revlog cloning selection
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42691
diff
changeset
|
93 |
0812d9fb63fe
upgrade: introduce the internal code for revlog cloning selection
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42691
diff
changeset
|
94 The store entry is checked against the passed filter""" |
50503
aede57466804
store: use boolean property for upgrade's matchrevlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50502
diff
changeset
|
95 if entry.is_changelog: |
42693
0812d9fb63fe
upgrade: introduce the internal code for revlog cloning selection
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42691
diff
changeset
|
96 return UPGRADE_CHANGELOG in revlogfilter |
50503
aede57466804
store: use boolean property for upgrade's matchrevlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50502
diff
changeset
|
97 elif entry.is_manifestlog: |
42693
0812d9fb63fe
upgrade: introduce the internal code for revlog cloning selection
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42691
diff
changeset
|
98 return UPGRADE_MANIFEST in revlogfilter |
50503
aede57466804
store: use boolean property for upgrade's matchrevlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50502
diff
changeset
|
99 assert entry.is_filelog |
45980
fe7d7917ceb5
upgrade: rename UPGRADE_FILELOG to UPGRADE_FILELOGS
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45735
diff
changeset
|
100 return UPGRADE_FILELOGS in revlogfilter |
42693
0812d9fb63fe
upgrade: introduce the internal code for revlog cloning selection
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42691
diff
changeset
|
101 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
102 |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
103 def _perform_clone( |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
104 ui, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
105 dstrepo, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
106 tr, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
107 old_revlog, |
50490
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
108 entry, |
46217
02df91e895bd
engine: pass upgrade operation inside `_perform_clone()`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46216
diff
changeset
|
109 upgrade_op, |
47084
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
110 sidedata_helpers, |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
111 oncopiedrevision, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
112 ): |
47062
f38bf44e077f
black: make codebase compatible with black v21.4b2 and v20.8b1
Kyle Lippincott <spectral@google.com>
parents:
46897
diff
changeset
|
113 """returns the new revlog object created""" |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
114 newrl = None |
50492
3473d18c029a
store: introduce a main_file_path method for revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50491
diff
changeset
|
115 revlog_path = entry.main_file_path() |
50503
aede57466804
store: use boolean property for upgrade's matchrevlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50502
diff
changeset
|
116 if matchrevlog(upgrade_op.revlogs_to_process, entry): |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
117 ui.note( |
50490
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
118 _(b'cloning %d revisions from %s\n') |
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
119 % (len(old_revlog), revlog_path) |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
120 ) |
50627
e1ee6910f6bc
store: add a `get_revlog_instance` method on revlog entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50503
diff
changeset
|
121 newrl = entry.get_revlog_instance(dstrepo) |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
122 old_revlog.clone( |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
123 tr, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
124 newrl, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
125 addrevisioncb=oncopiedrevision, |
46217
02df91e895bd
engine: pass upgrade operation inside `_perform_clone()`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46216
diff
changeset
|
126 deltareuse=upgrade_op.delta_reuse_mode, |
46218
3f92a9bb80f0
engine: prevent multiple checking of re-delta-multibase
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46217
diff
changeset
|
127 forcedeltabothparents=upgrade_op.force_re_delta_both_parents, |
47084
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
128 sidedata_helpers=sidedata_helpers, |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
129 ) |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
130 else: |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
131 msg = _(b'blindly copying %s containing %i revisions\n') |
50490
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
132 ui.note(msg % (revlog_path, len(old_revlog))) |
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
133 _copyrevlog(tr, dstrepo, old_revlog, entry) |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
134 |
50627
e1ee6910f6bc
store: add a `get_revlog_instance` method on revlog entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50503
diff
changeset
|
135 newrl = entry.get_revlog_instance(dstrepo) |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
136 return newrl |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
137 |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
138 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
139 def _clonerevlogs( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
140 ui, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
141 srcrepo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
142 dstrepo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
143 tr, |
46216
34efa84a43a1
engine: pass upgrade operation inside _clonerevlogs()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46215
diff
changeset
|
144 upgrade_op, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
145 ): |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
146 """Copy revlogs between 2 repos.""" |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
147 revcount = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
148 srcsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
149 srcrawsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
150 dstsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
151 fcount = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
152 frevcount = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
153 fsrcsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
154 frawsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
155 fdstsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
156 mcount = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
157 mrevcount = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
158 msrcsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
159 mrawsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
160 mdstsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
161 crevcount = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
162 csrcsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
163 crawsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
164 cdstsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
165 |
42689
896fb9deeaf8
upgrade: walk the source store file only once
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42137
diff
changeset
|
166 alldatafiles = list(srcrepo.store.walk()) |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
167 # mapping of data files which needs to be cloned |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
168 # key is unencoded filename |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
169 # value is revlog_object_from_srcrepo |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
170 manifests = {} |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
171 changelogs = {} |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
172 filelogs = {} |
42689
896fb9deeaf8
upgrade: walk the source store file only once
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42137
diff
changeset
|
173 |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
174 # Perform a pass to collect metadata. This validates we can open all |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
175 # source files and allows a unified progress bar to be displayed. |
50471
521fec115dad
store: use a StoreEntry object instead of tuple for store files
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50363
diff
changeset
|
176 for entry in alldatafiles: |
50496
e50d1fe7ebb4
store: issue a single entry for each revlog
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50492
diff
changeset
|
177 if not entry.is_revlog: |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
178 continue |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
179 |
50627
e1ee6910f6bc
store: add a `get_revlog_instance` method on revlog entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50503
diff
changeset
|
180 rl = entry.get_revlog_instance(srcrepo) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
181 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
182 info = rl.storageinfo( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
183 exclusivefiles=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
184 revisionscount=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
185 trackedsize=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
186 storedsize=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
187 ) |
39857
8dab7c8a93eb
upgrade: report size of backing files, not internal storage size
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39546
diff
changeset
|
188 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
189 revcount += info[b'revisionscount'] or 0 |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
190 datasize = info[b'storedsize'] or 0 |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
191 rawsize = info[b'trackedsize'] or 0 |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
192 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
193 srcsize += datasize |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
194 srcrawsize += rawsize |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
195 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
196 # This is for the separate progress bars. |
50502
e4186ddab473
store: use the new boolean property in `upgrade`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50496
diff
changeset
|
197 if entry.is_changelog: |
50490
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
198 changelogs[entry.target_id] = entry |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
199 crevcount += len(rl) |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
200 csrcsize += datasize |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
201 crawsize += rawsize |
50502
e4186ddab473
store: use the new boolean property in `upgrade`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50496
diff
changeset
|
202 elif entry.is_manifestlog: |
50490
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
203 manifests[entry.target_id] = entry |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
204 mcount += 1 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
205 mrevcount += len(rl) |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
206 msrcsize += datasize |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
207 mrawsize += rawsize |
50502
e4186ddab473
store: use the new boolean property in `upgrade`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50496
diff
changeset
|
208 elif entry.is_filelog: |
50490
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
209 filelogs[entry.target_id] = entry |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
210 fcount += 1 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
211 frevcount += len(rl) |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
212 fsrcsize += datasize |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
213 frawsize += rawsize |
37444
c8666a9e9e11
upgrade: sniff for filelog type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36373
diff
changeset
|
214 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
215 error.ProgrammingError(b'unknown revlog type') |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
216 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
217 if not revcount: |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
218 return |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
219 |
44798
e295ba238bd8
upgrade: support the --quiet flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44797
diff
changeset
|
220 ui.status( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
221 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
222 b'migrating %d total revisions (%d in filelogs, %d in manifests, ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
223 b'%d in changelog)\n' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
224 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
225 % (revcount, frevcount, mrevcount, crevcount) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
226 ) |
44798
e295ba238bd8
upgrade: support the --quiet flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44797
diff
changeset
|
227 ui.status( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
228 _(b'migrating %s in store; %s tracked data\n') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
229 % ((util.bytecount(srcsize), util.bytecount(srcrawsize))) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
230 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
231 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
232 # Used to keep track of progress. |
38399
185588cb0c4b
upgrade: use progress helper
Martin von Zweigbergk <martinvonz@google.com>
parents:
38398
diff
changeset
|
233 progress = None |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
234 |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
235 def oncopiedrevision(rl, rev, node): |
38399
185588cb0c4b
upgrade: use progress helper
Martin von Zweigbergk <martinvonz@google.com>
parents:
38398
diff
changeset
|
236 progress.increment() |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
237 |
47084
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
238 sidedata_helpers = get_sidedata_helpers(srcrepo, dstrepo) |
43134
75ad8af9c95e
upgrade: allow upgrade to repository using sidedata
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43117
diff
changeset
|
239 |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
240 # Migrating filelogs |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
241 ui.status( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
242 _( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
243 b'migrating %d filelogs containing %d revisions ' |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
244 b'(%s in store; %s tracked data)\n' |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
245 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
246 % ( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
247 fcount, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
248 frevcount, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
249 util.bytecount(fsrcsize), |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
250 util.bytecount(frawsize), |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
251 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
252 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
253 progress = srcrepo.ui.makeprogress(_(b'file revisions'), total=frevcount) |
50490
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
254 for target_id, entry in sorted(filelogs.items()): |
50627
e1ee6910f6bc
store: add a `get_revlog_instance` method on revlog entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50503
diff
changeset
|
255 oldrl = entry.get_revlog_instance(srcrepo) |
49552
1994842955db
upgrade: no longer keep all revlogs in memory at any point
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
49306
diff
changeset
|
256 |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
257 newrl = _perform_clone( |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
258 ui, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
259 dstrepo, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
260 tr, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
261 oldrl, |
50490
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
262 entry, |
46217
02df91e895bd
engine: pass upgrade operation inside `_perform_clone()`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46216
diff
changeset
|
263 upgrade_op, |
47084
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
264 sidedata_helpers, |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
265 oncopiedrevision, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
266 ) |
39870
b399ff55ee6d
upgrade: use storageinfo() for obtaining storage metadata
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39859
diff
changeset
|
267 info = newrl.storageinfo(storedsize=True) |
46214
5dfa837d933e
engine: refactor how total dstsize is calculated
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
268 fdstsize += info[b'storedsize'] or 0 |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
269 ui.status( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
270 _( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
271 b'finished migrating %d filelog revisions across %d ' |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
272 b'filelogs; change in size: %s\n' |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
273 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
274 % (frevcount, fcount, util.bytecount(fdstsize - fsrcsize)) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
275 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
276 |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
277 # Migrating manifests |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
278 ui.status( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
279 _( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
280 b'migrating %d manifests containing %d revisions ' |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
281 b'(%s in store; %s tracked data)\n' |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
282 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
283 % ( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
284 mcount, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
285 mrevcount, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
286 util.bytecount(msrcsize), |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
287 util.bytecount(mrawsize), |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
288 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
289 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
290 if progress: |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
291 progress.complete() |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
292 progress = srcrepo.ui.makeprogress( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
293 _(b'manifest revisions'), total=mrevcount |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
294 ) |
50490
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
295 for target_id, entry in sorted(manifests.items()): |
50627
e1ee6910f6bc
store: add a `get_revlog_instance` method on revlog entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50503
diff
changeset
|
296 oldrl = entry.get_revlog_instance(srcrepo) |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
297 newrl = _perform_clone( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
298 ui, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
299 dstrepo, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
300 tr, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
301 oldrl, |
50490
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
302 entry, |
46217
02df91e895bd
engine: pass upgrade operation inside `_perform_clone()`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46216
diff
changeset
|
303 upgrade_op, |
47084
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
304 sidedata_helpers, |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
305 oncopiedrevision, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
306 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
307 info = newrl.storageinfo(storedsize=True) |
46214
5dfa837d933e
engine: refactor how total dstsize is calculated
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
308 mdstsize += info[b'storedsize'] or 0 |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
309 ui.status( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
310 _( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
311 b'finished migrating %d manifest revisions across %d ' |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
312 b'manifests; change in size: %s\n' |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
313 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
314 % (mrevcount, mcount, util.bytecount(mdstsize - msrcsize)) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
315 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
316 |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
317 # Migrating changelog |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
318 ui.status( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
319 _( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
320 b'migrating changelog containing %d revisions ' |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
321 b'(%s in store; %s tracked data)\n' |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
322 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
323 % ( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
324 crevcount, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
325 util.bytecount(csrcsize), |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
326 util.bytecount(crawsize), |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
327 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
328 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
329 if progress: |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
330 progress.complete() |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
331 progress = srcrepo.ui.makeprogress( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
332 _(b'changelog revisions'), total=crevcount |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
333 ) |
50490
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
334 for target_id, entry in sorted(changelogs.items()): |
50627
e1ee6910f6bc
store: add a `get_revlog_instance` method on revlog entries
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50503
diff
changeset
|
335 oldrl = entry.get_revlog_instance(srcrepo) |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
336 newrl = _perform_clone( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
337 ui, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
338 dstrepo, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
339 tr, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
340 oldrl, |
50490
0935b9db21b6
upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50489
diff
changeset
|
341 entry, |
46217
02df91e895bd
engine: pass upgrade operation inside `_perform_clone()`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46216
diff
changeset
|
342 upgrade_op, |
47084
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Raphaël Gomès <rgomes@octobus.net>
parents:
46897
diff
changeset
|
343 sidedata_helpers, |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
344 oncopiedrevision, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
345 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
346 info = newrl.storageinfo(storedsize=True) |
46214
5dfa837d933e
engine: refactor how total dstsize is calculated
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
347 cdstsize += info[b'storedsize'] or 0 |
38399
185588cb0c4b
upgrade: use progress helper
Martin von Zweigbergk <martinvonz@google.com>
parents:
38398
diff
changeset
|
348 progress.complete() |
44798
e295ba238bd8
upgrade: support the --quiet flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44797
diff
changeset
|
349 ui.status( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
350 _( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
351 b'finished migrating %d changelog revisions; change in size: ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
352 b'%s\n' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
353 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
354 % (crevcount, util.bytecount(cdstsize - csrcsize)) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
355 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
356 |
46214
5dfa837d933e
engine: refactor how total dstsize is calculated
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
357 dstsize = fdstsize + mdstsize + cdstsize |
44798
e295ba238bd8
upgrade: support the --quiet flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44797
diff
changeset
|
358 ui.status( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
359 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
360 b'finished migrating %d total revisions; total change in store ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
361 b'size: %s\n' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
362 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
363 % (revcount, util.bytecount(dstsize - srcsize)) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
364 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
365 |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
366 |
46229
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
367 def _files_to_copy_post_revlog_clone(srcrepo): |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
368 """yields files which should be copied to destination after revlogs |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
369 are cloned""" |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
370 for path, kind, st in sorted(srcrepo.store.vfs.readdir(b'', stat=True)): |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
371 # don't copy revlogs as they are already cloned |
50671
e06d1a779eb6
store: stop relying on a `revlog_type` property
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
50627
diff
changeset
|
372 if store.is_revlog_file(path): |
46229
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
373 continue |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
374 # Skip transaction related files. |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
375 if path.startswith(b'undo'): |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
376 continue |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
377 # Only copy regular files. |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
378 if kind != stat.S_IFREG: |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
379 continue |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
380 # Skip other skipped files. |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
381 if path in (b'lock', b'fncache'): |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
382 continue |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
383 # TODO: should we skip cache too? |
30780
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
384 |
46229
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
385 yield path |
30780
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
386 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
387 |
46220
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
388 def _replacestores(currentrepo, upgradedrepo, backupvfs, upgrade_op): |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
389 """Replace the stores after current repository is upgraded |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
390 |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
391 Creates a backup of current repository store at backup path |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
392 Replaces upgraded store files in current repo from upgraded one |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
393 |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
394 Arguments: |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
395 currentrepo: repo object of current repository |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
396 upgradedrepo: repo object of the upgraded data |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
397 backupvfs: vfs object for the backup path |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
398 upgrade_op: upgrade operation object |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
399 to be used to decide what all is upgraded |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
400 """ |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
401 # TODO: don't blindly rename everything in store |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
402 # There can be upgrades where store is not touched at all |
46375
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46252
diff
changeset
|
403 if upgrade_op.backup_store: |
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46252
diff
changeset
|
404 util.rename(currentrepo.spath, backupvfs.join(b'store')) |
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46252
diff
changeset
|
405 else: |
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46252
diff
changeset
|
406 currentrepo.vfs.rmtree(b'store', forcibly=True) |
46220
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
407 util.rename(upgradedrepo.spath, currentrepo.spath) |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
408 |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
409 |
46219
481d9aed669c
engine: make hook point for extension a public function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46218
diff
changeset
|
410 def finishdatamigration(ui, srcrepo, dstrepo, requirements): |
30780
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
411 """Hook point for extensions to perform additional actions during upgrade. |
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
412 |
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
413 This function is called after revlogs and store files have been copied but |
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
414 before the new store is swapped into the original location. |
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
415 """ |
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
416 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
417 |
46056
c407513a44a3
upgrade: start moving the "to be happening" data in a dedicated object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46046
diff
changeset
|
418 def upgrade(ui, srcrepo, dstrepo, upgrade_op): |
30777
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
419 """Do the low-level work of upgrading a repository. |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
420 |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
421 The upgrade is effectively performed as a copy between a source |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
422 repository and a temporary destination repository. |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
423 |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
424 The source repository is unmodified for as long as possible so the |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
425 upgrade can abort at any time without causing loss of service for |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
426 readers and without corrupting the source repository. |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
427 """ |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
428 assert srcrepo.currentwlock() |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
429 assert dstrepo.currentwlock() |
46375
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46252
diff
changeset
|
430 backuppath = None |
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46252
diff
changeset
|
431 backupvfs = None |
30777
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
432 |
44798
e295ba238bd8
upgrade: support the --quiet flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44797
diff
changeset
|
433 ui.status( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
434 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
435 b'(it is safe to interrupt this process any time before ' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
436 b'data migration completes)\n' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
437 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
438 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
439 |
47320
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
440 if upgrade_actions.dirstatev2 in upgrade_op.upgrade_actions: |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
441 ui.status(_(b'upgrading to dirstate-v2 from v1\n')) |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
442 upgrade_dirstate(ui, srcrepo, upgrade_op, b'v1', b'v2') |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
443 upgrade_op.upgrade_actions.remove(upgrade_actions.dirstatev2) |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
444 |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
445 if upgrade_actions.dirstatev2 in upgrade_op.removed_actions: |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
446 ui.status(_(b'downgrading from dirstate-v2 to v1\n')) |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
447 upgrade_dirstate(ui, srcrepo, upgrade_op, b'v2', b'v1') |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
448 upgrade_op.removed_actions.remove(upgrade_actions.dirstatev2) |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
449 |
48790
5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48437
diff
changeset
|
450 if upgrade_actions.dirstatetrackedkey in upgrade_op.upgrade_actions: |
48793
6e559391f96e
tracked-key: remove the dual write and rename to tracked-hint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48790
diff
changeset
|
451 ui.status(_(b'create dirstate-tracked-hint file\n')) |
6e559391f96e
tracked-key: remove the dual write and rename to tracked-hint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48790
diff
changeset
|
452 upgrade_tracked_hint(ui, srcrepo, upgrade_op, add=True) |
48790
5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48437
diff
changeset
|
453 upgrade_op.upgrade_actions.remove(upgrade_actions.dirstatetrackedkey) |
5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48437
diff
changeset
|
454 elif upgrade_actions.dirstatetrackedkey in upgrade_op.removed_actions: |
48793
6e559391f96e
tracked-key: remove the dual write and rename to tracked-hint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48790
diff
changeset
|
455 ui.status(_(b'remove dirstate-tracked-hint file\n')) |
6e559391f96e
tracked-key: remove the dual write and rename to tracked-hint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48790
diff
changeset
|
456 upgrade_tracked_hint(ui, srcrepo, upgrade_op, add=False) |
48790
5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48437
diff
changeset
|
457 upgrade_op.removed_actions.remove(upgrade_actions.dirstatetrackedkey) |
5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48437
diff
changeset
|
458 |
47320
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
459 if not (upgrade_op.upgrade_actions or upgrade_op.removed_actions): |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
460 return |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
461 |
46467
45c3a263d5d1
engine: 'if not, else' -> 'if, else'
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46380
diff
changeset
|
462 if upgrade_op.requirements_only: |
45c3a263d5d1
engine: 'if not, else' -> 'if, else'
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46380
diff
changeset
|
463 ui.status(_(b'upgrading repository requirements\n')) |
45c3a263d5d1
engine: 'if not, else' -> 'if, else'
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46380
diff
changeset
|
464 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) |
46472
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
465 # if there is only one action and that is persistent nodemap upgrade |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
466 # directly write the nodemap file and update requirements instead of going |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
467 # through the whole cloning process |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
468 elif ( |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
469 len(upgrade_op.upgrade_actions) == 1 |
47320
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
470 and b'persistent-nodemap' in upgrade_op.upgrade_actions_names |
46472
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
471 and not upgrade_op.removed_actions |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
472 ): |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
473 ui.status( |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
474 _(b'upgrading repository to use persistent nodemap feature\n') |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
475 ) |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
476 with srcrepo.transaction(b'upgrade') as tr: |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
477 unfi = srcrepo.unfiltered() |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
478 cl = unfi.changelog |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
479 nodemap.persist_nodemap(tr, cl, force=True) |
46525
636853347e14
upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46472
diff
changeset
|
480 # we want to directly operate on the underlying revlog to force |
636853347e14
upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46472
diff
changeset
|
481 # create a nodemap file. This is fine since this is upgrade code |
636853347e14
upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46472
diff
changeset
|
482 # and it heavily relies on repository being revlog based |
636853347e14
upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46472
diff
changeset
|
483 # hence accessing private attributes can be justified |
636853347e14
upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46472
diff
changeset
|
484 nodemap.persist_nodemap( |
636853347e14
upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46472
diff
changeset
|
485 tr, unfi.manifestlog._rootstore._revlog, force=True |
636853347e14
upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46472
diff
changeset
|
486 ) |
46472
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46467
diff
changeset
|
487 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) |
46526
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
488 elif ( |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
489 len(upgrade_op.removed_actions) == 1 |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
490 and [ |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
491 x |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
492 for x in upgrade_op.removed_actions |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
493 if x.name == b'persistent-nodemap' |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
494 ] |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
495 and not upgrade_op.upgrade_actions |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
496 ): |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
497 ui.status( |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
498 _(b'downgrading repository to not use persistent nodemap feature\n') |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
499 ) |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
500 with srcrepo.transaction(b'upgrade') as tr: |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
501 unfi = srcrepo.unfiltered() |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
502 cl = unfi.changelog |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
503 nodemap.delete_nodemap(tr, srcrepo, cl) |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
504 # check comment 20 lines above for accessing private attributes |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
505 nodemap.delete_nodemap( |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
506 tr, srcrepo, unfi.manifestlog._rootstore._revlog |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
507 ) |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46525
diff
changeset
|
508 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) |
46467
45c3a263d5d1
engine: 'if not, else' -> 'if, else'
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46380
diff
changeset
|
509 else: |
46379
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
510 with dstrepo.transaction(b'upgrade') as tr: |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
511 _clonerevlogs( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
512 ui, |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
513 srcrepo, |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
514 dstrepo, |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
515 tr, |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
516 upgrade_op, |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
517 ) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
518 |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
519 # Now copy other files in the store directory. |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
520 for p in _files_to_copy_post_revlog_clone(srcrepo): |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
521 srcrepo.ui.status(_(b'copying %s\n') % p) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
522 src = srcrepo.store.rawvfs.join(p) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
523 dst = dstrepo.store.rawvfs.join(p) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
524 util.copyfile(src, dst, copystat=True) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
525 |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
526 finishdatamigration(ui, srcrepo, dstrepo, requirements) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
527 |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
528 ui.status(_(b'data fully upgraded in a temporary repository\n')) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
529 |
46379
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
530 if upgrade_op.backup_store: |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
531 backuppath = pycompat.mkdtemp( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
532 prefix=b'upgradebackup.', dir=srcrepo.path |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
533 ) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
534 backupvfs = vfsmod.vfs(backuppath) |
30780
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
535 |
46379
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
536 # Make a backup of requires file first, as it is the first to be modified. |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
537 util.copyfile( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
538 srcrepo.vfs.join(b'requires'), backupvfs.join(b'requires') |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
539 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
540 |
46379
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
541 # We install an arbitrary requirement that clients must not support |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
542 # as a mechanism to lock out new clients during the data swap. This is |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
543 # better than allowing a client to continue while the repository is in |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
544 # an inconsistent state. |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
545 ui.status( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
546 _( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
547 b'marking source repository as being upgraded; clients will be ' |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
548 b'unable to read from repository\n' |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
549 ) |
46375
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46252
diff
changeset
|
550 ) |
46379
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
551 scmutil.writereporequirements( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
552 srcrepo, srcrepo.requirements | {b'upgradeinprogress'} |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
553 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
554 |
46379
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
555 ui.status(_(b'starting in-place swap of repository data\n')) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
556 if upgrade_op.backup_store: |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
557 ui.status( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
558 _(b'replaced files will be backed up at %s\n') % backuppath |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
559 ) |
30777
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
560 |
46379
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
561 # Now swap in the new store directory. Doing it as a rename should make |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
562 # the operation nearly instantaneous and atomic (at least in well-behaved |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
563 # environments). |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
564 ui.status(_(b'replacing store...\n')) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
565 tstart = util.timer() |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
566 _replacestores(srcrepo, dstrepo, backupvfs, upgrade_op) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
567 elapsed = util.timer() - tstart |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
568 ui.status( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
569 _( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
570 b'store replacement complete; repository was inconsistent for ' |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
571 b'%0.1fs\n' |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
572 ) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
573 % elapsed |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
574 ) |
30777
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
575 |
46379
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
576 # We first write the requirements file. Any new requirements will lock |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
577 # out legacy clients. |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
578 ui.status( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
579 _( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
580 b'finalizing requirements file and making repository readable ' |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
581 b'again\n' |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
582 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
583 ) |
46379
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
584 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) |
30777
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
585 |
46379
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
586 if upgrade_op.backup_store: |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
587 # The lock file from the old store won't be removed because nothing has a |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
588 # reference to its new location. So clean it up manually. Alternatively, we |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
589 # could update srcrepo.svfs and other variables to point to the new |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
590 # location. This is simpler. |
46794 | 591 assert backupvfs is not None # help pytype |
46379
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46375
diff
changeset
|
592 backupvfs.unlink(b'store/lock') |
30781
f2c069bf78ee
repair: clean up stale lock file from store backup
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30780
diff
changeset
|
593 |
30777
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
594 return backuppath |
47320
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
595 |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
596 |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
597 def upgrade_dirstate(ui, srcrepo, upgrade_op, old, new): |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
598 if upgrade_op.backup_store: |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
599 backuppath = pycompat.mkdtemp( |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
600 prefix=b'upgradebackup.', dir=srcrepo.path |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
601 ) |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
602 ui.status(_(b'replaced files will be backed up at %s\n') % backuppath) |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
603 backupvfs = vfsmod.vfs(backuppath) |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
604 util.copyfile( |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
605 srcrepo.vfs.join(b'requires'), backupvfs.join(b'requires') |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
606 ) |
48437
6e4999cb085e
dirstate-v2: fix upgrade on an empty repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48068
diff
changeset
|
607 try: |
6e4999cb085e
dirstate-v2: fix upgrade on an empty repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48068
diff
changeset
|
608 util.copyfile( |
6e4999cb085e
dirstate-v2: fix upgrade on an empty repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48068
diff
changeset
|
609 srcrepo.vfs.join(b'dirstate'), backupvfs.join(b'dirstate') |
6e4999cb085e
dirstate-v2: fix upgrade on an empty repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48068
diff
changeset
|
610 ) |
49306
2e726c934fcd
py3: catch FileNotFoundError instead of checking errno == ENOENT
Manuel Jacob <me@manueljacob.de>
parents:
48875
diff
changeset
|
611 except FileNotFoundError: |
48437
6e4999cb085e
dirstate-v2: fix upgrade on an empty repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48068
diff
changeset
|
612 # The dirstate does not exist on an empty repo or a repo with no |
6e4999cb085e
dirstate-v2: fix upgrade on an empty repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48068
diff
changeset
|
613 # revision checked out |
49306
2e726c934fcd
py3: catch FileNotFoundError instead of checking errno == ENOENT
Manuel Jacob <me@manueljacob.de>
parents:
48875
diff
changeset
|
614 pass |
47320
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
615 |
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
616 assert srcrepo.dirstate._use_dirstate_v2 == (old == b'v2') |
50363
b4b1791f36e4
repo-upgrade: write new requirement before upgrading the dirstate
Raphaël Gomès <rgomes@octobus.net>
parents:
49552
diff
changeset
|
617 use_v2 = new == b'v2' |
b4b1791f36e4
repo-upgrade: write new requirement before upgrading the dirstate
Raphaël Gomès <rgomes@octobus.net>
parents:
49552
diff
changeset
|
618 if use_v2: |
b4b1791f36e4
repo-upgrade: write new requirement before upgrading the dirstate
Raphaël Gomès <rgomes@octobus.net>
parents:
49552
diff
changeset
|
619 # Write the requirements *before* upgrading |
b4b1791f36e4
repo-upgrade: write new requirement before upgrading the dirstate
Raphaël Gomès <rgomes@octobus.net>
parents:
49552
diff
changeset
|
620 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) |
b4b1791f36e4
repo-upgrade: write new requirement before upgrading the dirstate
Raphaël Gomès <rgomes@octobus.net>
parents:
49552
diff
changeset
|
621 |
47320
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
622 srcrepo.dirstate._map.preload() |
50363
b4b1791f36e4
repo-upgrade: write new requirement before upgrading the dirstate
Raphaël Gomès <rgomes@octobus.net>
parents:
49552
diff
changeset
|
623 srcrepo.dirstate._use_dirstate_v2 = use_v2 |
b4b1791f36e4
repo-upgrade: write new requirement before upgrading the dirstate
Raphaël Gomès <rgomes@octobus.net>
parents:
49552
diff
changeset
|
624 srcrepo.dirstate._map._use_dirstate_v2 = use_v2 |
47320
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
625 srcrepo.dirstate._dirty = True |
48437
6e4999cb085e
dirstate-v2: fix upgrade on an empty repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48068
diff
changeset
|
626 try: |
6e4999cb085e
dirstate-v2: fix upgrade on an empty repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48068
diff
changeset
|
627 srcrepo.vfs.unlink(b'dirstate') |
49306
2e726c934fcd
py3: catch FileNotFoundError instead of checking errno == ENOENT
Manuel Jacob <me@manueljacob.de>
parents:
48875
diff
changeset
|
628 except FileNotFoundError: |
48437
6e4999cb085e
dirstate-v2: fix upgrade on an empty repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48068
diff
changeset
|
629 # The dirstate does not exist on an empty repo or a repo with no |
6e4999cb085e
dirstate-v2: fix upgrade on an empty repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48068
diff
changeset
|
630 # revision checked out |
49306
2e726c934fcd
py3: catch FileNotFoundError instead of checking errno == ENOENT
Manuel Jacob <me@manueljacob.de>
parents:
48875
diff
changeset
|
631 pass |
48437
6e4999cb085e
dirstate-v2: fix upgrade on an empty repository
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48068
diff
changeset
|
632 |
47320
a43d256c041a
dirstate-v2: Add `hg debugupgraderepo` command support
Simon Sapin <simon.sapin@octobus.net>
parents:
47149
diff
changeset
|
633 srcrepo.dirstate.write(None) |
50363
b4b1791f36e4
repo-upgrade: write new requirement before upgrading the dirstate
Raphaël Gomès <rgomes@octobus.net>
parents:
49552
diff
changeset
|
634 if not use_v2: |
b4b1791f36e4
repo-upgrade: write new requirement before upgrading the dirstate
Raphaël Gomès <rgomes@octobus.net>
parents:
49552
diff
changeset
|
635 # Remove the v2 requirement *after* downgrading |
b4b1791f36e4
repo-upgrade: write new requirement before upgrading the dirstate
Raphaël Gomès <rgomes@octobus.net>
parents:
49552
diff
changeset
|
636 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) |
48790
5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48437
diff
changeset
|
637 |
5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48437
diff
changeset
|
638 |
48793
6e559391f96e
tracked-key: remove the dual write and rename to tracked-hint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48790
diff
changeset
|
639 def upgrade_tracked_hint(ui, srcrepo, upgrade_op, add): |
48790
5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48437
diff
changeset
|
640 if add: |
48793
6e559391f96e
tracked-key: remove the dual write and rename to tracked-hint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48790
diff
changeset
|
641 srcrepo.dirstate._use_tracked_hint = True |
48790
5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48437
diff
changeset
|
642 srcrepo.dirstate._dirty = True |
5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48437
diff
changeset
|
643 srcrepo.dirstate._dirty_tracked_set = True |
5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48437
diff
changeset
|
644 srcrepo.dirstate.write(None) |
5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48437
diff
changeset
|
645 if not add: |
48793
6e559391f96e
tracked-key: remove the dual write and rename to tracked-hint
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48790
diff
changeset
|
646 srcrepo.dirstate.delete_tracked_hint() |
48790
5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48437
diff
changeset
|
647 |
5ba24e886cec
tracked-key: make it possible to upgrade to and downgrade from the feature
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
48437
diff
changeset
|
648 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) |