# HG changeset patch # User Mateusz Kwapich # Date 1463001532 25200 # Node ID ad1ce3c7af720c8034b84416a9951553af2fcfcb # Parent e51f341835990fff76bd8568ff4e081616d4a870 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 diff -r e51f34183599 -r ad1ce3c7af72 mercurial/localrepo.py --- 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", diff -r e51f34183599 -r ad1ce3c7af72 tests/test-inherit-mode.t --- 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