Mercurial > public > mercurial-scm > hg-stable
annotate mercurial/upgrade_utils/engine.py @ 47099:3aab2330b7d3
sidedata: move sidedata-related utils to the dedicated module
Differential Revision: https://phab.mercurial-scm.org/D10360
author | Rapha?l Gom?s <rgomes@octobus.net> |
---|---|
date | Mon, 19 Apr 2021 11:22:24 +0200 |
parents | 27f1191b1305 |
children | bea4717415c0 |
rev | line source |
---|---|
31894
9379689b6c10
upgrade: update the header comment
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31893
diff
changeset
|
1 # upgrade.py - functions for in place upgrade of Mercurial repository |
4702
18e91c9def0c
strip: move strip code to a new repair module
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
2 # |
31895
783b4c9bd5f5
upgrade: update the copyright statement
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
31894
diff
changeset
|
3 # Copyright (c) 2016-present, Gregory Szorc |
4702
18e91c9def0c
strip: move strip code to a new repair module
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
4 # |
8225
46293a0c7e9f
updated license to be explicit about GPL version 2
Martin Geisler <mg@lazybytes.net>
parents:
8073
diff
changeset
|
5 # This software may be used and distributed according to the terms of the |
10263 | 6 # GNU General Public License version 2 or any later version. |
4702
18e91c9def0c
strip: move strip code to a new repair module
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
7 |
25970
d1419cfbd4f4
repair: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25874
diff
changeset
|
8 from __future__ import absolute_import |
d1419cfbd4f4
repair: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25874
diff
changeset
|
9 |
30780
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
10 import stat |
4702
18e91c9def0c
strip: move strip code to a new repair module
Matt Mackall <mpm@selenic.com>
parents:
diff
changeset
|
11 |
46050
f105c49e89cd
upgrade: split actual upgrade code away from the main module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46039
diff
changeset
|
12 from ..i18n import _ |
f105c49e89cd
upgrade: split actual upgrade code away from the main module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46039
diff
changeset
|
13 from ..pycompat import getattr |
f105c49e89cd
upgrade: split actual upgrade code away from the main module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46039
diff
changeset
|
14 from .. import ( |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
15 changelog, |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26425
diff
changeset
|
16 error, |
35353
8f3f8b8dbab7
upgrade: use actual filelog to convert filelog
Boris Feld <boris.feld@octobus.net>
parents:
35352
diff
changeset
|
17 filelog, |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
18 manifest, |
44981
4c1d39215034
metadata: move computation related to files touched in a dedicated module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44900
diff
changeset
|
19 metadata, |
38198
2ce60954b1b7
py3: wrap tempfile.mkdtemp() to use bytes path
Yuya Nishihara <yuya@tcha.org>
parents:
37444
diff
changeset
|
20 pycompat, |
45392
77b8588dd84e
requirements: introduce new requirements related module
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45391
diff
changeset
|
21 requirements, |
30777
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
22 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
|
23 store, |
25970
d1419cfbd4f4
repair: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25874
diff
changeset
|
24 util, |
31242
254f98326eef
vfs: use 'vfs' module directly in 'mercurial.repair'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
30995
diff
changeset
|
25 vfs as vfsmod, |
25970
d1419cfbd4f4
repair: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
25874
diff
changeset
|
26 ) |
47098
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
27 from ..revlogutils import ( |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
28 constants as revlogconst, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
29 flagutil, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
30 nodemap, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
31 sidedata as sidedatamod, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
32 ) |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
33 |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
34 |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
35 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
|
36 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
|
37 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
|
38 if not sequential: |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
39 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
|
40 revlogconst.KIND_CHANGELOG, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
41 sidedatamod.SD_FILES, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
42 (sidedatamod.SD_FILES,), |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
43 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
|
44 flagutil.REVIDX_HASCOPIESINFO, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
45 replace=True, |
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
46 ) |
47099
3aab2330b7d3
sidedata: move sidedata-related utils to the dedicated module
Rapha?l Gom?s <rgomes@octobus.net>
parents:
47098
diff
changeset
|
47 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
|
48 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
49 |
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
|
50 def _revlogfrompath(repo, rl_type, path): |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
51 """Obtain a revlog from a repo path. |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
52 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
53 An instance of the appropriate class is returned. |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
54 """ |
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
|
55 if rl_type & store.FILEFLAGS_CHANGELOG: |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
56 return changelog.changelog(repo.svfs) |
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
|
57 elif rl_type & store.FILEFLAGS_MANIFESTLOG: |
cf49e54ef965
upgrade: take advantage of the new information returned by `store.walk`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46895
diff
changeset
|
58 mandir = b'' |
cf49e54ef965
upgrade: take advantage of the new information returned by `store.walk`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46895
diff
changeset
|
59 if b'/' in path: |
cf49e54ef965
upgrade: take advantage of the new information returned by `store.walk`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46895
diff
changeset
|
60 mandir = path.rsplit(b'/', 1)[0] |
46793
6266d19556ad
node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46576
diff
changeset
|
61 return manifest.manifestrevlog( |
6266d19556ad
node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46576
diff
changeset
|
62 repo.nodeconstants, repo.svfs, tree=mandir |
6266d19556ad
node: introduce nodeconstants class
Joerg Sonnenberger <joerg@bec.de>
parents:
46576
diff
changeset
|
63 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
64 else: |
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
|
65 # drop the extension and the `data/` prefix |
cf49e54ef965
upgrade: take advantage of the new information returned by `store.walk`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46895
diff
changeset
|
66 path = path.rsplit(b'.', 1)[0].split(b'/', 1)[1] |
cf49e54ef965
upgrade: take advantage of the new information returned by `store.walk`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46895
diff
changeset
|
67 return filelog.filelog(repo.svfs, path) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
68 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
69 |
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
|
70 def _copyrevlog(tr, destrepo, oldrl, rl_type, unencodedname): |
42714
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
71 """copy all relevant files for `oldrl` into `destrepo` store |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
72 |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
73 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:
42713
diff
changeset
|
74 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:
42713
diff
changeset
|
75 content is compatible with format of the destination repository. |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
76 """ |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
77 oldrl = getattr(oldrl, '_revlog', oldrl) |
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
|
78 newrl = _revlogfrompath(destrepo, rl_type, unencodedname) |
42714
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
79 newrl = getattr(newrl, '_revlog', newrl) |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
80 |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
81 oldvfs = oldrl.opener |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
82 newvfs = newrl.opener |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
83 oldindex = oldvfs.join(oldrl.indexfile) |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
84 newindex = newvfs.join(newrl.indexfile) |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
85 olddata = oldvfs.join(oldrl.datafile) |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
86 newdata = newvfs.join(newrl.datafile) |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
87 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
88 with newvfs(newrl.indexfile, b'w'): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
89 pass # create all the directories |
42714
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
90 |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
91 util.copyfile(oldindex, newindex) |
43004
373749982924
upgrade: also register copied `.d` files to fncache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43002
diff
changeset
|
92 copydata = oldrl.opener.exists(oldrl.datafile) |
373749982924
upgrade: also register copied `.d` files to fncache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43002
diff
changeset
|
93 if copydata: |
42714
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
94 util.copyfile(olddata, newdata) |
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
95 |
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
|
96 if rl_type & store.FILEFLAGS_FILELOG: |
42714
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
97 destrepo.svfs.fncache.add(unencodedname) |
43004
373749982924
upgrade: also register copied `.d` files to fncache
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
43002
diff
changeset
|
98 if copydata: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
99 destrepo.svfs.fncache.add(unencodedname[:-2] + b'.d') |
42714
5535a2201ff1
upgrade: introduce a _copyrevlog method
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42713
diff
changeset
|
100 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
101 |
46039
6c960b708ac4
upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46018
diff
changeset
|
102 UPGRADE_CHANGELOG = b"changelog" |
6c960b708ac4
upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46018
diff
changeset
|
103 UPGRADE_MANIFEST = b"manifest" |
6c960b708ac4
upgrade: display the list of processed revlog before proceeding
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46018
diff
changeset
|
104 UPGRADE_FILELOGS = b"all-filelogs" |
42715
0812d9fb63fe
upgrade: introduce the internal code for revlog cloning selection
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42714
diff
changeset
|
105 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
106 UPGRADE_ALL_REVLOGS = frozenset( |
45995
fe7d7917ceb5
upgrade: rename UPGRADE_FILELOG to UPGRADE_FILELOGS
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45735
diff
changeset
|
107 [UPGRADE_CHANGELOG, UPGRADE_MANIFEST, UPGRADE_FILELOGS] |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
108 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
109 |
42715
0812d9fb63fe
upgrade: introduce the internal code for revlog cloning selection
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42714
diff
changeset
|
110 |
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
|
111 def matchrevlog(revlogfilter, rl_type): |
45694
d1c10d33a85c
upgrade: improve documentation of matchrevlog()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45498
diff
changeset
|
112 """check if a revlog is selected for cloning. |
d1c10d33a85c
upgrade: improve documentation of matchrevlog()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45498
diff
changeset
|
113 |
d1c10d33a85c
upgrade: improve documentation of matchrevlog()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
45498
diff
changeset
|
114 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:
45498
diff
changeset
|
115 or it can be blindly copied. |
42715
0812d9fb63fe
upgrade: introduce the internal code for revlog cloning selection
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42714
diff
changeset
|
116 |
0812d9fb63fe
upgrade: introduce the internal code for revlog cloning selection
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42714
diff
changeset
|
117 The store entry is checked against the passed filter""" |
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
|
118 if rl_type & store.FILEFLAGS_CHANGELOG: |
42715
0812d9fb63fe
upgrade: introduce the internal code for revlog cloning selection
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42714
diff
changeset
|
119 return UPGRADE_CHANGELOG in revlogfilter |
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
|
120 elif rl_type & store.FILEFLAGS_MANIFESTLOG: |
42715
0812d9fb63fe
upgrade: introduce the internal code for revlog cloning selection
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42714
diff
changeset
|
121 return UPGRADE_MANIFEST in revlogfilter |
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
|
122 assert rl_type & store.FILEFLAGS_FILELOG |
45995
fe7d7917ceb5
upgrade: rename UPGRADE_FILELOG to UPGRADE_FILELOGS
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
45735
diff
changeset
|
123 return UPGRADE_FILELOGS in revlogfilter |
42715
0812d9fb63fe
upgrade: introduce the internal code for revlog cloning selection
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42714
diff
changeset
|
124 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
125 |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
126 def _perform_clone( |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
127 ui, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
128 dstrepo, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
129 tr, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
130 old_revlog, |
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
|
131 rl_type, |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
132 unencoded, |
46217
02df91e895bd
engine: pass upgrade operation inside `_perform_clone()`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46216
diff
changeset
|
133 upgrade_op, |
47098
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
134 sidedata_helpers, |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
135 oncopiedrevision, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
136 ): |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
137 """ returns the new revlog object created""" |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
138 newrl = None |
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
|
139 if matchrevlog(upgrade_op.revlogs_to_process, rl_type): |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
140 ui.note( |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
141 _(b'cloning %d revisions from %s\n') % (len(old_revlog), unencoded) |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
142 ) |
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
|
143 newrl = _revlogfrompath(dstrepo, rl_type, unencoded) |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
144 old_revlog.clone( |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
145 tr, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
146 newrl, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
147 addrevisioncb=oncopiedrevision, |
46217
02df91e895bd
engine: pass upgrade operation inside `_perform_clone()`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46216
diff
changeset
|
148 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
|
149 forcedeltabothparents=upgrade_op.force_re_delta_both_parents, |
47098
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
150 sidedata_helpers=sidedata_helpers, |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
151 ) |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
152 else: |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
153 msg = _(b'blindly copying %s containing %i revisions\n') |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
154 ui.note(msg % (unencoded, len(old_revlog))) |
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
|
155 _copyrevlog(tr, dstrepo, old_revlog, rl_type, unencoded) |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
156 |
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
|
157 newrl = _revlogfrompath(dstrepo, rl_type, unencoded) |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
158 return newrl |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
159 |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
160 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
161 def _clonerevlogs( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
162 ui, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
163 srcrepo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
164 dstrepo, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
165 tr, |
46216
34efa84a43a1
engine: pass upgrade operation inside _clonerevlogs()
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46215
diff
changeset
|
166 upgrade_op, |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
167 ): |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
168 """Copy revlogs between 2 repos.""" |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
169 revcount = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
170 srcsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
171 srcrawsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
172 dstsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
173 fcount = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
174 frevcount = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
175 fsrcsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
176 frawsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
177 fdstsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
178 mcount = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
179 mrevcount = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
180 msrcsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
181 mrawsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
182 mdstsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
183 crevcount = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
184 csrcsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
185 crawsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
186 cdstsize = 0 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
187 |
42712
896fb9deeaf8
upgrade: walk the source store file only once
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42137
diff
changeset
|
188 alldatafiles = list(srcrepo.store.walk()) |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
189 # 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
|
190 # key is unencoded filename |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
191 # value is revlog_object_from_srcrepo |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
192 manifests = {} |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
193 changelogs = {} |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
194 filelogs = {} |
42712
896fb9deeaf8
upgrade: walk the source store file only once
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
42137
diff
changeset
|
195 |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
196 # 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
|
197 # source files and allows a unified progress bar to be displayed. |
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
|
198 for rl_type, unencoded, encoded, size in alldatafiles: |
cf49e54ef965
upgrade: take advantage of the new information returned by `store.walk`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46895
diff
changeset
|
199 if not rl_type & store.FILEFLAGS_REVLOG_MAIN: |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
200 continue |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
201 |
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
|
202 rl = _revlogfrompath(srcrepo, rl_type, unencoded) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
203 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
204 info = rl.storageinfo( |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
205 exclusivefiles=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
206 revisionscount=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
207 trackedsize=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
208 storedsize=True, |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
209 ) |
39862
8dab7c8a93eb
upgrade: report size of backing files, not internal storage size
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39563
diff
changeset
|
210 |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
211 revcount += info[b'revisionscount'] or 0 |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
212 datasize = info[b'storedsize'] or 0 |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
213 rawsize = info[b'trackedsize'] or 0 |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
214 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
215 srcsize += datasize |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
216 srcrawsize += rawsize |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
217 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
218 # This is for the separate progress bars. |
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
|
219 if rl_type & store.FILEFLAGS_CHANGELOG: |
cf49e54ef965
upgrade: take advantage of the new information returned by `store.walk`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46895
diff
changeset
|
220 changelogs[unencoded] = (rl_type, rl) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
221 crevcount += len(rl) |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
222 csrcsize += datasize |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
223 crawsize += rawsize |
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
|
224 elif rl_type & store.FILEFLAGS_MANIFESTLOG: |
cf49e54ef965
upgrade: take advantage of the new information returned by `store.walk`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46895
diff
changeset
|
225 manifests[unencoded] = (rl_type, rl) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
226 mcount += 1 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
227 mrevcount += len(rl) |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
228 msrcsize += datasize |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
229 mrawsize += rawsize |
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
|
230 elif rl_type & store.FILEFLAGS_FILELOG: |
cf49e54ef965
upgrade: take advantage of the new information returned by `store.walk`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46895
diff
changeset
|
231 filelogs[unencoded] = (rl_type, rl) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
232 fcount += 1 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
233 frevcount += len(rl) |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
234 fsrcsize += datasize |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
235 frawsize += rawsize |
37444
c8666a9e9e11
upgrade: sniff for filelog type
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36404
diff
changeset
|
236 else: |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
237 error.ProgrammingError(b'unknown revlog type') |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
238 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
239 if not revcount: |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
240 return |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
241 |
44875
e295ba238bd8
upgrade: support the --quiet flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44874
diff
changeset
|
242 ui.status( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
243 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
244 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
|
245 b'%d in changelog)\n' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
246 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
247 % (revcount, frevcount, mrevcount, crevcount) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
248 ) |
44875
e295ba238bd8
upgrade: support the --quiet flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44874
diff
changeset
|
249 ui.status( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
250 _(b'migrating %s in store; %s tracked data\n') |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
251 % ((util.bytecount(srcsize), util.bytecount(srcrawsize))) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
252 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
253 |
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
254 # Used to keep track of progress. |
38405
185588cb0c4b
upgrade: use progress helper
Martin von Zweigbergk <martinvonz@google.com>
parents:
38404
diff
changeset
|
255 progress = None |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
256 |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
257 def oncopiedrevision(rl, rev, node): |
38405
185588cb0c4b
upgrade: use progress helper
Martin von Zweigbergk <martinvonz@google.com>
parents:
38404
diff
changeset
|
258 progress.increment() |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
259 |
47098
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
260 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
|
261 |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
262 # Migrating filelogs |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
263 ui.status( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
264 _( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
265 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
|
266 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
|
267 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
268 % ( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
269 fcount, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
270 frevcount, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
271 util.bytecount(fsrcsize), |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
272 util.bytecount(frawsize), |
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 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
275 progress = srcrepo.ui.makeprogress(_(b'file revisions'), total=frevcount) |
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
|
276 for unencoded, (rl_type, oldrl) in sorted(filelogs.items()): |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
277 newrl = _perform_clone( |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
278 ui, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
279 dstrepo, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
280 tr, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
281 oldrl, |
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
|
282 rl_type, |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
283 unencoded, |
46217
02df91e895bd
engine: pass upgrade operation inside `_perform_clone()`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46216
diff
changeset
|
284 upgrade_op, |
47098
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
285 sidedata_helpers, |
46193
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
286 oncopiedrevision, |
85f7cf314b39
engine: refactor actual cloning code into separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46191
diff
changeset
|
287 ) |
39875
b399ff55ee6d
upgrade: use storageinfo() for obtaining storage metadata
Gregory Szorc <gregory.szorc@gmail.com>
parents:
39864
diff
changeset
|
288 info = newrl.storageinfo(storedsize=True) |
46214
5dfa837d933e
engine: refactor how total dstsize is calculated
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
289 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
|
290 ui.status( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
291 _( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
292 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
|
293 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
|
294 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
295 % (frevcount, fcount, util.bytecount(fdstsize - fsrcsize)) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
296 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
297 |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
298 # Migrating manifests |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
299 ui.status( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
300 _( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
301 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
|
302 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
|
303 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
304 % ( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
305 mcount, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
306 mrevcount, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
307 util.bytecount(msrcsize), |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
308 util.bytecount(mrawsize), |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
309 ) |
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 if progress: |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
312 progress.complete() |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
313 progress = srcrepo.ui.makeprogress( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
314 _(b'manifest revisions'), total=mrevcount |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
315 ) |
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
|
316 for unencoded, (rl_type, oldrl) in sorted(manifests.items()): |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
317 newrl = _perform_clone( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
318 ui, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
319 dstrepo, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
320 tr, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
321 oldrl, |
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
|
322 rl_type, |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
323 unencoded, |
46217
02df91e895bd
engine: pass upgrade operation inside `_perform_clone()`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46216
diff
changeset
|
324 upgrade_op, |
47098
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
325 sidedata_helpers, |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
326 oncopiedrevision, |
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 info = newrl.storageinfo(storedsize=True) |
46214
5dfa837d933e
engine: refactor how total dstsize is calculated
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
329 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
|
330 ui.status( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
331 _( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
332 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
|
333 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
|
334 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
335 % (mrevcount, mcount, util.bytecount(mdstsize - msrcsize)) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
336 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
337 |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
338 # Migrating changelog |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
339 ui.status( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
340 _( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
341 b'migrating changelog containing %d revisions ' |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
342 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
|
343 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
344 % ( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
345 crevcount, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
346 util.bytecount(csrcsize), |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
347 util.bytecount(crawsize), |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
348 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
349 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
350 if progress: |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
351 progress.complete() |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
352 progress = srcrepo.ui.makeprogress( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
353 _(b'changelog revisions'), total=crevcount |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
354 ) |
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
|
355 for unencoded, (rl_type, oldrl) in sorted(changelogs.items()): |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
356 newrl = _perform_clone( |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
357 ui, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
358 dstrepo, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
359 tr, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
360 oldrl, |
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
|
361 rl_type, |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
362 unencoded, |
46217
02df91e895bd
engine: pass upgrade operation inside `_perform_clone()`
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46216
diff
changeset
|
363 upgrade_op, |
47098
27f1191b1305
sidedata: replace sidedata upgrade mechanism with the new one
Rapha?l Gom?s <rgomes@octobus.net>
parents:
46897
diff
changeset
|
364 sidedata_helpers, |
46194
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
365 oncopiedrevision, |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
366 ) |
4d1cec4e5e1f
engine: unwrap a hard to understand for loop
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46193
diff
changeset
|
367 info = newrl.storageinfo(storedsize=True) |
46214
5dfa837d933e
engine: refactor how total dstsize is calculated
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
368 cdstsize += info[b'storedsize'] or 0 |
38405
185588cb0c4b
upgrade: use progress helper
Martin von Zweigbergk <martinvonz@google.com>
parents:
38404
diff
changeset
|
369 progress.complete() |
44875
e295ba238bd8
upgrade: support the --quiet flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44874
diff
changeset
|
370 ui.status( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
371 _( |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
372 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
|
373 b'%s\n' |
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
374 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
375 % (crevcount, util.bytecount(cdstsize - csrcsize)) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
376 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
377 |
46214
5dfa837d933e
engine: refactor how total dstsize is calculated
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46210
diff
changeset
|
378 dstsize = fdstsize + mdstsize + cdstsize |
44875
e295ba238bd8
upgrade: support the --quiet flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44874
diff
changeset
|
379 ui.status( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
380 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
381 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
|
382 b'size: %s\n' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
383 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
384 % (revcount, util.bytecount(dstsize - srcsize)) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
385 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
386 |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
387 |
46229
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
388 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
|
389 """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
|
390 are cloned""" |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
391 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
|
392 # don't copy revlogs as they are already cloned |
46897
1c52d77d7861
upgrade: do not hardcore file extension of revlogs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46896
diff
changeset
|
393 if store.revlog_type(path) is not None: |
46229
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
394 continue |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
395 # Skip transaction related files. |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
396 if path.startswith(b'undo'): |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
397 continue |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
398 # Only copy regular files. |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
399 if kind != stat.S_IFREG: |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
400 continue |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
401 # Skip other skipped files. |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
402 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
|
403 continue |
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
404 # 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
|
405 |
46229
52abb1af2995
engine: prevent a function call for each store file
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46222
diff
changeset
|
406 yield path |
30780
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
407 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
408 |
46220
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
409 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
|
410 """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
|
411 |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
412 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
|
413 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
|
414 |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
415 Arguments: |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
416 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
|
417 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
|
418 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
|
419 upgrade_op: upgrade operation object |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
420 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
|
421 """ |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
422 # 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
|
423 # There can be upgrades where store is not touched at all |
46447
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46252
diff
changeset
|
424 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
|
425 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
|
426 else: |
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46252
diff
changeset
|
427 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
|
428 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
|
429 |
1ca7865c245d
engine: refactor code to replace stores in separate function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46219
diff
changeset
|
430 |
46219
481d9aed669c
engine: make hook point for extension a public function
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46218
diff
changeset
|
431 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
|
432 """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
|
433 |
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
434 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
|
435 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
|
436 """ |
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
437 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
438 |
46060
c407513a44a3
upgrade: start moving the "to be happening" data in a dedicated object
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
46050
diff
changeset
|
439 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
|
440 """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
|
441 |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
442 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
|
443 repository and a temporary destination repository. |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
444 |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
445 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
|
446 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
|
447 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
|
448 """ |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
449 assert srcrepo.currentwlock() |
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
450 assert dstrepo.currentwlock() |
46447
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46252
diff
changeset
|
451 backuppath = None |
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46252
diff
changeset
|
452 backupvfs = None |
30777
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
453 |
44875
e295ba238bd8
upgrade: support the --quiet flag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
44874
diff
changeset
|
454 ui.status( |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
455 _( |
43077
687b865b95ad
formatting: byteify all mercurial/ and hgext/ string literals
Augie Fackler <augie@google.com>
parents:
43076
diff
changeset
|
456 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
|
457 b'data migration completes)\n' |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
458 ) |
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
459 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
460 |
46528
45c3a263d5d1
engine: 'if not, else' -> 'if, else'
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46452
diff
changeset
|
461 if upgrade_op.requirements_only: |
45c3a263d5d1
engine: 'if not, else' -> 'if, else'
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46452
diff
changeset
|
462 ui.status(_(b'upgrading repository requirements\n')) |
45c3a263d5d1
engine: 'if not, else' -> 'if, else'
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46452
diff
changeset
|
463 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) |
46533
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46528
diff
changeset
|
464 # 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:
46528
diff
changeset
|
465 # 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:
46528
diff
changeset
|
466 # through the whole cloning process |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46528
diff
changeset
|
467 elif ( |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46528
diff
changeset
|
468 len(upgrade_op.upgrade_actions) == 1 |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46528
diff
changeset
|
469 and b'persistent-nodemap' in upgrade_op._upgrade_actions_names |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46528
diff
changeset
|
470 and not upgrade_op.removed_actions |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46528
diff
changeset
|
471 ): |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46528
diff
changeset
|
472 ui.status( |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46528
diff
changeset
|
473 _(b'upgrading repository to use persistent nodemap feature\n') |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46528
diff
changeset
|
474 ) |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46528
diff
changeset
|
475 with srcrepo.transaction(b'upgrade') as tr: |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46528
diff
changeset
|
476 unfi = srcrepo.unfiltered() |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46528
diff
changeset
|
477 cl = unfi.changelog |
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46528
diff
changeset
|
478 nodemap.persist_nodemap(tr, cl, force=True) |
46575
636853347e14
upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46533
diff
changeset
|
479 # we want to directly operate on the underlying revlog to force |
636853347e14
upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46533
diff
changeset
|
480 # 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:
46533
diff
changeset
|
481 # and it heavily relies on repository being revlog based |
636853347e14
upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46533
diff
changeset
|
482 # hence accessing private attributes can be justified |
636853347e14
upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46533
diff
changeset
|
483 nodemap.persist_nodemap( |
636853347e14
upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46533
diff
changeset
|
484 tr, unfi.manifestlog._rootstore._revlog, force=True |
636853347e14
upgrade: write nodemap for manifests too
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46533
diff
changeset
|
485 ) |
46533
98e39f04d60e
upgrade: implement partial upgrade for upgrading persistent-nodemap
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46528
diff
changeset
|
486 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) |
46576
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
487 elif ( |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
488 len(upgrade_op.removed_actions) == 1 |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
489 and [ |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
490 x |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
491 for x in upgrade_op.removed_actions |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
492 if x.name == b'persistent-nodemap' |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
493 ] |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
494 and not upgrade_op.upgrade_actions |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
495 ): |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
496 ui.status( |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
497 _(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:
46575
diff
changeset
|
498 ) |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
499 with srcrepo.transaction(b'upgrade') as tr: |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
500 unfi = srcrepo.unfiltered() |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
501 cl = unfi.changelog |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
502 nodemap.delete_nodemap(tr, srcrepo, cl) |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
503 # 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:
46575
diff
changeset
|
504 nodemap.delete_nodemap( |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
505 tr, srcrepo, unfi.manifestlog._rootstore._revlog |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
506 ) |
67b5fafd3a46
upgrade: speed up when we have only nodemap to downgrade
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46575
diff
changeset
|
507 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) |
46528
45c3a263d5d1
engine: 'if not, else' -> 'if, else'
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46452
diff
changeset
|
508 else: |
46451
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
509 with dstrepo.transaction(b'upgrade') as tr: |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
510 _clonerevlogs( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
511 ui, |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
512 srcrepo, |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
513 dstrepo, |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
514 tr, |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
515 upgrade_op, |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
516 ) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
517 |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
518 # Now copy other files in the store directory. |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
519 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:
46447
diff
changeset
|
520 srcrepo.ui.status(_(b'copying %s\n') % p) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
521 src = srcrepo.store.rawvfs.join(p) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
522 dst = dstrepo.store.rawvfs.join(p) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
523 util.copyfile(src, dst, copystat=True) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
524 |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
525 finishdatamigration(ui, srcrepo, dstrepo, requirements) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
526 |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
527 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
|
528 |
46451
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
529 if upgrade_op.backup_store: |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
530 backuppath = pycompat.mkdtemp( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
531 prefix=b'upgradebackup.', dir=srcrepo.path |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
532 ) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
533 backupvfs = vfsmod.vfs(backuppath) |
30780
2603d04889e1
repair: copy non-revlog store files during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30779
diff
changeset
|
534 |
46451
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
535 # 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:
46447
diff
changeset
|
536 util.copyfile( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
537 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:
46447
diff
changeset
|
538 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
539 |
46451
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
540 # 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:
46447
diff
changeset
|
541 # 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:
46447
diff
changeset
|
542 # 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:
46447
diff
changeset
|
543 # an inconsistent state. |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
544 ui.status( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
545 _( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
546 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:
46447
diff
changeset
|
547 b'unable to read from repository\n' |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
548 ) |
46447
2e8a844d0ae0
upgrade: don't create store backup if `--no-backup` is passed
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46252
diff
changeset
|
549 ) |
46451
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
550 scmutil.writereporequirements( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
551 srcrepo, srcrepo.requirements | {b'upgradeinprogress'} |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
552 ) |
30779
38aa1ca97b6a
repair: migrate revlogs during upgrade
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30777
diff
changeset
|
553 |
46451
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
554 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:
46447
diff
changeset
|
555 if upgrade_op.backup_store: |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
556 ui.status( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
557 _(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:
46447
diff
changeset
|
558 ) |
30777
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
559 |
46451
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
560 # 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:
46447
diff
changeset
|
561 # 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:
46447
diff
changeset
|
562 # environments). |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
563 ui.status(_(b'replacing store...\n')) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
564 tstart = util.timer() |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
565 _replacestores(srcrepo, dstrepo, backupvfs, upgrade_op) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
566 elapsed = util.timer() - tstart |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
567 ui.status( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
568 _( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
569 b'store replacement complete; repository was inconsistent for ' |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
570 b'%0.1fs\n' |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
571 ) |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
572 % elapsed |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
573 ) |
30777
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
574 |
46451
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
575 # 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:
46447
diff
changeset
|
576 # out legacy clients. |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
577 ui.status( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
578 _( |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
579 b'finalizing requirements file and making repository readable ' |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
580 b'again\n' |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
581 ) |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
43031
diff
changeset
|
582 ) |
46451
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
583 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
|
584 |
46451
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
585 if upgrade_op.backup_store: |
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
586 # 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:
46447
diff
changeset
|
587 # 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:
46447
diff
changeset
|
588 # 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:
46447
diff
changeset
|
589 # location. This is simpler. |
46796 | 590 assert backupvfs is not None # help pytype |
46451
ee9002b99595
engine: add `if True` to prepare for next patch
Pulkit Goyal <7895pulkit@gmail.com>
parents:
46447
diff
changeset
|
591 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
|
592 |
30777
7de7afd8bdd9
repair: begin implementation of in-place upgrading
Gregory Szorc <gregory.szorc@gmail.com>
parents:
30776
diff
changeset
|
593 return backuppath |