D3579: state: write the version number in plain text on top of state files

pulkit (Pulkit Goyal) phabricator at mercurial-scm.org
Sat May 19 10:52:08 EDT 2018


pulkit updated this revision to Diff 8787.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D3579?vs=8734&id=8787

REVISION DETAIL
  https://phab.mercurial-scm.org/D3579

AFFECTED FILES
  mercurial/state.py

CHANGE DETAILS

diff --git a/mercurial/state.py b/mercurial/state.py
--- a/mercurial/state.py
+++ b/mercurial/state.py
@@ -22,6 +22,7 @@
 from .thirdparty import cbor
 
 from . import (
+    error,
     util,
 )
 
@@ -51,18 +52,28 @@
         """read the existing state file and return a dict of data stored"""
         return self._read()
 
-    def save(self, data):
+    def save(self, version, data):
         """write all the state data stored to .hg/<filename> file
 
         we use third-party library cbor to serialize data to write in the file.
         """
+        if not isinstance(version, int):
+            raise error.ProgrammingError("version of state file should be"
+                                         " an integer")
+
         with self._repo.vfs(self.fname, 'wb', atomictemp=True) as fp:
+            fp.write('%d\n' % iv)
             cbor.dump(self.opts, fp, canonical=True)
 
     def _read(self):
         """reads the state file and returns a dictionary which contain
         data in the same format as it was before storing"""
         with self._repo.vfs(self.fname, 'rb') as fp:
+            try:
+                version = int(fp.readline())
+            except ValueError:
+                raise error.ProgrammingError("unknown version of state file"
+                                             " found")
             return cbor.load(fp)
 
     def delete(self):



To: pulkit, #hg-reviewers, martinvonz
Cc: martinvonz, mercurial-devel


More information about the Mercurial-devel mailing list