Show More
@@ -176,6 +176,12 b' def upgraderepo(' | |||
|
176 | 176 | ui.write((b' - %s\n' % r)) |
|
177 | 177 | ui.write((b'\n')) |
|
178 | 178 | |
|
179 | upgrade_op = upgrade_actions.UpgradeOperation( | |
|
180 | newreqs, | |
|
181 | [a.name for a in actions], | |
|
182 | revlogs, | |
|
183 | ) | |
|
184 | ||
|
179 | 185 | if not run: |
|
180 | 186 | fromconfig = [] |
|
181 | 187 | onlydefault = [] |
@@ -249,8 +255,6 b' def upgraderepo(' | |||
|
249 | 255 | printupgradeactions() |
|
250 | 256 | print_affected_revlogs() |
|
251 | 257 | |
|
252 | upgradeactions = [a.name for a in actions] | |
|
253 | ||
|
254 | 258 | ui.status(_(b'beginning upgrade...\n')) |
|
255 | 259 | with repo.wlock(), repo.lock(): |
|
256 | 260 | ui.status(_(b'repository locked and read-only\n')) |
@@ -276,7 +280,7 b' def upgraderepo(' | |||
|
276 | 280 | |
|
277 | 281 | with dstrepo.wlock(), dstrepo.lock(): |
|
278 | 282 | backuppath = upgrade_engine.upgrade( |
|
279 |
ui, repo, dstrepo, |
|
|
283 | ui, repo, dstrepo, upgrade_op | |
|
280 | 284 | ) |
|
281 | 285 | if not (backup or backuppath is None): |
|
282 | 286 | ui.status( |
@@ -554,6 +554,15 b' def determineactions(repo, deficiencies,' | |||
|
554 | 554 | return newactions |
|
555 | 555 | |
|
556 | 556 | |
|
557 | class UpgradeOperation(object): | |
|
558 | """represent the work to be done during an upgrade""" | |
|
559 | ||
|
560 | def __init__(self, requirements, actions, revlogs_to_process): | |
|
561 | self.requirements = requirements | |
|
562 | self.actions = actions | |
|
563 | self.revlogs_to_process = revlogs_to_process | |
|
564 | ||
|
565 | ||
|
557 | 566 | ### Code checking if a repository can got through the upgrade process at all. # |
|
558 | 567 | |
|
559 | 568 |
@@ -383,9 +383,7 b' def _finishdatamigration(ui, srcrepo, ds' | |||
|
383 | 383 | """ |
|
384 | 384 | |
|
385 | 385 | |
|
386 | def upgrade( | |
|
387 | ui, srcrepo, dstrepo, requirements, actions, revlogs=UPGRADE_ALL_REVLOGS | |
|
388 | ): | |
|
386 | def upgrade(ui, srcrepo, dstrepo, upgrade_op): | |
|
389 | 387 | """Do the low-level work of upgrading a repository. |
|
390 | 388 | |
|
391 | 389 | The upgrade is effectively performed as a copy between a source |
@@ -405,13 +403,13 b' def upgrade(' | |||
|
405 | 403 | ) |
|
406 | 404 | ) |
|
407 | 405 | |
|
408 | if b're-delta-all' in actions: | |
|
406 | if b're-delta-all' in upgrade_op.actions: | |
|
409 | 407 | deltareuse = revlog.revlog.DELTAREUSENEVER |
|
410 | elif b're-delta-parent' in actions: | |
|
408 | elif b're-delta-parent' in upgrade_op.actions: | |
|
411 | 409 | deltareuse = revlog.revlog.DELTAREUSESAMEREVS |
|
412 | elif b're-delta-multibase' in actions: | |
|
410 | elif b're-delta-multibase' in upgrade_op.actions: | |
|
413 | 411 | deltareuse = revlog.revlog.DELTAREUSESAMEREVS |
|
414 | elif b're-delta-fulladd' in actions: | |
|
412 | elif b're-delta-fulladd' in upgrade_op.actions: | |
|
415 | 413 | deltareuse = revlog.revlog.DELTAREUSEFULLADD |
|
416 | 414 | else: |
|
417 | 415 | deltareuse = revlog.revlog.DELTAREUSEALWAYS |
@@ -423,14 +421,16 b' def upgrade(' | |||
|
423 | 421 | dstrepo, |
|
424 | 422 | tr, |
|
425 | 423 | deltareuse, |
|
426 | b're-delta-multibase' in actions, | |
|
427 | revlogs=revlogs, | |
|
424 | b're-delta-multibase' in upgrade_op.actions, | |
|
425 | revlogs=upgrade_op.revlogs_to_process, | |
|
428 | 426 | ) |
|
429 | 427 | |
|
430 | 428 | # Now copy other files in the store directory. |
|
431 | 429 | # The sorted() makes execution deterministic. |
|
432 | 430 | for p, kind, st in sorted(srcrepo.store.vfs.readdir(b'', stat=True)): |
|
433 | if not _filterstorefile(srcrepo, dstrepo, requirements, p, kind, st): | |
|
431 | if not _filterstorefile( | |
|
432 | srcrepo, dstrepo, upgrade_op.requirements, p, kind, st | |
|
433 | ): | |
|
434 | 434 | continue |
|
435 | 435 | |
|
436 | 436 | srcrepo.ui.status(_(b'copying %s\n') % p) |
@@ -489,7 +489,7 b' def upgrade(' | |||
|
489 | 489 | b'again\n' |
|
490 | 490 | ) |
|
491 | 491 | ) |
|
492 | scmutil.writereporequirements(srcrepo, requirements) | |
|
492 | scmutil.writereporequirements(srcrepo, upgrade_op.requirements) | |
|
493 | 493 | |
|
494 | 494 | # The lock file from the old store won't be removed because nothing has a |
|
495 | 495 | # reference to its new location. So clean it up manually. Alternatively, we |
General Comments 0
You need to be logged in to leave comments.
Login now