comparison mercurial/upgrade_utils/engine.py @ 46526:67b5fafd3a46

upgrade: speed up when we have only nodemap to downgrade Similar to what we do on upgrade, if we have only persistent-nodemap to downgrade we will just delete the nodemap files and update repository requirements instead of processing all the revlogs. After downgrade, we are left with unrequired docket and transaction files which seems fine but can work on deleting them if someone feels we should. Differential Revision: https://phab.mercurial-scm.org/D9992
author Pulkit Goyal <7895pulkit@gmail.com>
date Wed, 10 Feb 2021 17:08:34 +0530
parents 636853347e14
children 6266d19556ad
comparison
equal deleted inserted replaced
46525:636853347e14 46526:67b5fafd3a46
474 # hence accessing private attributes can be justified 474 # hence accessing private attributes can be justified
475 nodemap.persist_nodemap( 475 nodemap.persist_nodemap(
476 tr, unfi.manifestlog._rootstore._revlog, force=True 476 tr, unfi.manifestlog._rootstore._revlog, force=True
477 ) 477 )
478 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) 478 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements)
479 elif (
480 len(upgrade_op.removed_actions) == 1
481 and [
482 x
483 for x in upgrade_op.removed_actions
484 if x.name == b'persistent-nodemap'
485 ]
486 and not upgrade_op.upgrade_actions
487 ):
488 ui.status(
489 _(b'downgrading repository to not use persistent nodemap feature\n')
490 )
491 with srcrepo.transaction(b'upgrade') as tr:
492 unfi = srcrepo.unfiltered()
493 cl = unfi.changelog
494 nodemap.delete_nodemap(tr, srcrepo, cl)
495 # check comment 20 lines above for accessing private attributes
496 nodemap.delete_nodemap(
497 tr, srcrepo, unfi.manifestlog._rootstore._revlog
498 )
499 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements)
479 else: 500 else:
480 with dstrepo.transaction(b'upgrade') as tr: 501 with dstrepo.transaction(b'upgrade') as tr:
481 _clonerevlogs( 502 _clonerevlogs(
482 ui, 503 ui,
483 srcrepo, 504 srcrepo,