644 ) |
643 ) |
645 try: |
644 try: |
646 util.copyfile( |
645 util.copyfile( |
647 srcrepo.vfs.join(b'dirstate'), backupvfs.join(b'dirstate') |
646 srcrepo.vfs.join(b'dirstate'), backupvfs.join(b'dirstate') |
648 ) |
647 ) |
649 except (IOError, OSError) as e: |
648 except FileNotFoundError: |
650 # The dirstate does not exist on an empty repo or a repo with no |
649 # The dirstate does not exist on an empty repo or a repo with no |
651 # revision checked out |
650 # revision checked out |
652 if e.errno != errno.ENOENT: |
651 pass |
653 raise |
|
654 |
652 |
655 assert srcrepo.dirstate._use_dirstate_v2 == (old == b'v2') |
653 assert srcrepo.dirstate._use_dirstate_v2 == (old == b'v2') |
656 srcrepo.dirstate._map.preload() |
654 srcrepo.dirstate._map.preload() |
657 srcrepo.dirstate._use_dirstate_v2 = new == b'v2' |
655 srcrepo.dirstate._use_dirstate_v2 = new == b'v2' |
658 srcrepo.dirstate._map._use_dirstate_v2 = srcrepo.dirstate._use_dirstate_v2 |
656 srcrepo.dirstate._map._use_dirstate_v2 = srcrepo.dirstate._use_dirstate_v2 |
659 srcrepo.dirstate._dirty = True |
657 srcrepo.dirstate._dirty = True |
660 try: |
658 try: |
661 srcrepo.vfs.unlink(b'dirstate') |
659 srcrepo.vfs.unlink(b'dirstate') |
662 except (IOError, OSError) as e: |
660 except FileNotFoundError: |
663 # The dirstate does not exist on an empty repo or a repo with no |
661 # The dirstate does not exist on an empty repo or a repo with no |
664 # revision checked out |
662 # revision checked out |
665 if e.errno != errno.ENOENT: |
663 pass |
666 raise |
|
667 |
664 |
668 srcrepo.dirstate.write(None) |
665 srcrepo.dirstate.write(None) |
669 |
666 |
670 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) |
667 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) |
671 |
668 |