Show More
@@ -562,7 +562,26 b' def _copyrevlog(tr, destrepo, oldrl, une' | |||||
562 | or unencodedname.endswith('00manifest.i')): |
|
562 | or unencodedname.endswith('00manifest.i')): | |
563 | destrepo.svfs.fncache.add(unencodedname) |
|
563 | destrepo.svfs.fncache.add(unencodedname) | |
564 |
|
564 | |||
565 | def _clonerevlogs(ui, srcrepo, dstrepo, tr, deltareuse, forcedeltabothparents): |
|
565 | UPGRADE_CHANGELOG = object() | |
|
566 | UPGRADE_MANIFEST = object() | |||
|
567 | UPGRADE_FILELOG = object() | |||
|
568 | ||||
|
569 | UPGRADE_ALL_REVLOGS = frozenset([UPGRADE_CHANGELOG, | |||
|
570 | UPGRADE_MANIFEST, | |||
|
571 | UPGRADE_FILELOG]) | |||
|
572 | ||||
|
573 | def matchrevlog(revlogfilter, entry): | |||
|
574 | """check is a revlog is selected for cloning | |||
|
575 | ||||
|
576 | The store entry is checked against the passed filter""" | |||
|
577 | if entry.endswith('00changelog.i'): | |||
|
578 | return UPGRADE_CHANGELOG in revlogfilter | |||
|
579 | elif entry.endswith('00manifest.i'): | |||
|
580 | return UPGRADE_MANIFEST in revlogfilter | |||
|
581 | return UPGRADE_FILELOG in revlogfilter | |||
|
582 | ||||
|
583 | def _clonerevlogs(ui, srcrepo, dstrepo, tr, deltareuse, forcedeltabothparents, | |||
|
584 | revlogs=UPGRADE_ALL_REVLOGS): | |||
566 | """Copy revlogs between 2 repos.""" |
|
585 | """Copy revlogs between 2 repos.""" | |
567 | revcount = 0 |
|
586 | revcount = 0 | |
568 | srcsize = 0 |
|
587 | srcsize = 0 | |
@@ -643,7 +662,6 b' def _clonerevlogs(ui, srcrepo, dstrepo, ' | |||||
643 | continue |
|
662 | continue | |
644 |
|
663 | |||
645 | oldrl = _revlogfrompath(srcrepo, unencoded) |
|
664 | oldrl = _revlogfrompath(srcrepo, unencoded) | |
646 | newrl = _revlogfrompath(dstrepo, unencoded) |
|
|||
647 |
|
665 | |||
648 | if isinstance(oldrl, changelog.changelog) and 'c' not in seen: |
|
666 | if isinstance(oldrl, changelog.changelog) and 'c' not in seen: | |
649 | ui.write(_('finished migrating %d manifest revisions across %d ' |
|
667 | ui.write(_('finished migrating %d manifest revisions across %d ' | |
@@ -682,11 +700,19 b' def _clonerevlogs(ui, srcrepo, dstrepo, ' | |||||
682 | progress = srcrepo.ui.makeprogress(_('file revisions'), |
|
700 | progress = srcrepo.ui.makeprogress(_('file revisions'), | |
683 | total=frevcount) |
|
701 | total=frevcount) | |
684 |
|
702 | |||
|
703 | if matchrevlog(revlogs, unencoded): | |||
|
704 | ui.note(_('cloning %d revisions from %s\n') | |||
|
705 | % (len(oldrl), unencoded)) | |||
|
706 | newrl = _revlogfrompath(dstrepo, unencoded) | |||
|
707 | oldrl.clone(tr, newrl, addrevisioncb=oncopiedrevision, | |||
|
708 | deltareuse=deltareuse, | |||
|
709 | forcedeltabothparents=forcedeltabothparents) | |||
|
710 | else: | |||
|
711 | msg = _('blindly copying %s containing %i revisions\n') | |||
|
712 | ui.note(msg % (unencoded, len(oldrl))) | |||
|
713 | _copyrevlog(tr, dstrepo, oldrl, unencoded) | |||
685 |
|
714 | |||
686 | ui.note(_('cloning %d revisions from %s\n') % (len(oldrl), unencoded)) |
|
715 | newrl = _revlogfrompath(dstrepo, unencoded) | |
687 | oldrl.clone(tr, newrl, addrevisioncb=oncopiedrevision, |
|
|||
688 | deltareuse=deltareuse, |
|
|||
689 | forcedeltabothparents=forcedeltabothparents) |
|
|||
690 |
|
716 | |||
691 | info = newrl.storageinfo(storedsize=True) |
|
717 | info = newrl.storageinfo(storedsize=True) | |
692 | datasize = info['storedsize'] or 0 |
|
718 | datasize = info['storedsize'] or 0 | |
@@ -746,7 +772,8 b' def _finishdatamigration(ui, srcrepo, ds' | |||||
746 | before the new store is swapped into the original location. |
|
772 | before the new store is swapped into the original location. | |
747 | """ |
|
773 | """ | |
748 |
|
774 | |||
749 |
def _upgraderepo(ui, srcrepo, dstrepo, requirements, actions |
|
775 | def _upgraderepo(ui, srcrepo, dstrepo, requirements, actions, | |
|
776 | revlogs=UPGRADE_ALL_REVLOGS): | |||
750 | """Do the low-level work of upgrading a repository. |
|
777 | """Do the low-level work of upgrading a repository. | |
751 |
|
778 | |||
752 | The upgrade is effectively performed as a copy between a source |
|
779 | The upgrade is effectively performed as a copy between a source | |
@@ -775,7 +802,7 b' def _upgraderepo(ui, srcrepo, dstrepo, r' | |||||
775 |
|
802 | |||
776 | with dstrepo.transaction('upgrade') as tr: |
|
803 | with dstrepo.transaction('upgrade') as tr: | |
777 | _clonerevlogs(ui, srcrepo, dstrepo, tr, deltareuse, |
|
804 | _clonerevlogs(ui, srcrepo, dstrepo, tr, deltareuse, | |
778 | 're-delta-multibase' in actions) |
|
805 | 're-delta-multibase' in actions, revlogs=revlogs) | |
779 |
|
806 | |||
780 | # Now copy other files in the store directory. |
|
807 | # Now copy other files in the store directory. | |
781 | # The sorted() makes execution deterministic. |
|
808 | # The sorted() makes execution deterministic. |
General Comments 0
You need to be logged in to leave comments.
Login now