comparison mercurial/upgrade_utils/engine.py @ 47674:ff97e793ed36

dirstate-v2: Introduce a docket file .hg/dirstate now only contains some metadata to point to a separate data file named .hg/dirstate.{}.d with a random hexadecimal identifier. For now every update creates a new data file and removes the old one, but later we?ll (usually) append to an existing file. Separating into two files allows doing the "write to a temporary file then atomically rename into destination" dance with only a small docket file, without always rewriting a lot of data. Differential Revision: https://phab.mercurial-scm.org/D11088
author Simon Sapin <simon.sapin@octobus.net>
date Thu, 08 Jul 2021 12:18:21 +0200
parents aa2296893168
children 6b9ad3a0c348
comparison
equal deleted inserted replaced
47673:37825a85d3b0 47674:ff97e793ed36
641 srcrepo.dirstate._map._use_dirstate_tree = True 641 srcrepo.dirstate._map._use_dirstate_tree = True
642 srcrepo.dirstate._map.preload() 642 srcrepo.dirstate._map.preload()
643 srcrepo.dirstate._use_dirstate_v2 = new == b'v2' 643 srcrepo.dirstate._use_dirstate_v2 = new == b'v2'
644 srcrepo.dirstate._map._use_dirstate_v2 = srcrepo.dirstate._use_dirstate_v2 644 srcrepo.dirstate._map._use_dirstate_v2 = srcrepo.dirstate._use_dirstate_v2
645 srcrepo.dirstate._dirty = True 645 srcrepo.dirstate._dirty = True
646 srcrepo.vfs.unlink(b'dirstate')
646 srcrepo.dirstate.write(None) 647 srcrepo.dirstate.write(None)
647 648
648 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements) 649 scmutil.writereporequirements(srcrepo, upgrade_op.new_requirements)