localrepo: use dirstate savebackup instead of handling dirstate file manually
authorMateusz Kwapich <mitrandir@fb.com>
Wed, 11 May 2016 14:18:52 -0700
changeset 29191 ad1ce3c7af72
parent 29190 e51f34183599
child 29192 bac14dbbbfab
localrepo: use dirstate savebackup instead of handling dirstate file manually This is one step towards having dirstate manage its own storage. It will be useful for the implementation of sql dirstate [1]. This introduced a small test change: now we always write the dirstate before saving backup so in some cases where dirstate file didn't exist yet savebackup can create it. [1] https://www.mercurial-scm.org/wiki/SQLDirstatePlan
mercurial/localrepo.py
tests/test-inherit-mode.t
--- a/mercurial/localrepo.py	Fri May 13 13:30:08 2016 -0700
+++ b/mercurial/localrepo.py	Wed May 11 14:18:52 2016 -0700
@@ -1012,9 +1012,6 @@
                 _("abandoned transaction found"),
                 hint=_("run 'hg recover' to clean up transaction"))
 
-        # make journal.dirstate contain in-memory changes at this point
-        self.dirstate.write(None)
-
         idbase = "%.40f#%f" % (random.random(), time.time())
         txnid = 'TXN:' + util.sha1(idbase).hexdigest()
         self.hook('pretxnopen', throw=True, txnname=desc, txnid=txnid)
@@ -1099,8 +1096,7 @@
         return [(vfs, undoname(x)) for vfs, x in self._journalfiles()]
 
     def _writejournal(self, desc):
-        self.vfs.write("journal.dirstate",
-                          self.vfs.tryread("dirstate"))
+        self.dirstate.savebackup(None, prefix='journal.')
         self.vfs.write("journal.branch",
                           encoding.fromlocal(self.dirstate.branch()))
         self.vfs.write("journal.desc",
--- a/tests/test-inherit-mode.t	Fri May 13 13:30:08 2016 -0700
+++ b/tests/test-inherit-mode.t	Wed May 11 14:18:52 2016 -0700
@@ -117,6 +117,7 @@
   00660 ../push/.hg/cache/branch2-base
   00660 ../push/.hg/cache/rbc-names-v1
   00660 ../push/.hg/cache/rbc-revs-v1
+  00660 ../push/.hg/dirstate
   00660 ../push/.hg/requires
   00770 ../push/.hg/store/
   00660 ../push/.hg/store/00changelog.i