Mercurial > public > mercurial-scm > hg-stable
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) |