[PATCH 2 of 3 V2] localrepo: use dirstate restorebackup instead of copying dirstate manually
Mateusz Kwapich
mitrandir at fb.com
Wed May 11 17:30:43 EDT 2016
# HG changeset patch
# User Mateusz Kwapich <mitrandir at fb.com>
# Date 1463002211 25200
# Wed May 11 14:30:11 2016 -0700
# Node ID ff880d9c73800358230da3a7ff447e12a5a91b3c
# Parent a1b956549c45a0191956bc074f276bd18afd40c1
localrepo: use dirstate restorebackup instead of copying dirstate manually
This is one step towards having dirstate manage its own storage. It will
be useful for the implementation of sqldirstate [1].
I'm deleting of one of the dirstate.invalidate() calls because restorebackup
method does that for us.
[1] https://www.mercurial-scm.org/wiki/SQLDirstatePlan
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -1047,7 +1047,7 @@ class localrepository(object):
# discard all changes (including ones already written
# out) in this transaction
- repo.vfs.rename('journal.dirstate', 'dirstate')
+ repo.dirstate.restorebackup(None, prefix='journal.')
repo.invalidate(clearfilecache=True)
@@ -1189,7 +1189,7 @@ class localrepository(object):
# prevent dirstateguard from overwriting already restored one
dsguard.close()
- self.vfs.rename('undo.dirstate', 'dirstate')
+ self.dirstate.restorebackup(None, prefix='undo.')
try:
branch = self.vfs.read('undo.branch')
self.dirstate.setbranch(encoding.tolocal(branch))
@@ -1198,7 +1198,6 @@ class localrepository(object):
'current branch is still \'%s\'\n')
% self.dirstate.branch())
- self.dirstate.invalidate()
parents = tuple([p.rev() for p in self[None].parents()])
if len(parents) > 1:
ui.status(_('working directory now based on '
More information about the Mercurial-devel
mailing list