pulkit created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers.
REVISION SUMMARY This patch changes the cmdstate class to stop having a dict like interface and delete the __nonzero__ function. After this patch, the save fuction takes a dict to store the data and read function returns a dict of the data stored. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D3572 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 @@ -46,42 +46,35 @@ """ self._repo = repo self.fname = fname - if not opts: - self.opts = {} - else: - self.opts = opts - - def __nonzero__(self): - return self.exists() - - def __getitem__(self, key): - return self.opts[key] - def __setitem__(self, key, value): - updates = {key: value} - self.opts.update(updates) + def read(self): + """read the existing state file and return a dict of data stored""" + return self._read() - def load(self): - """load the existing state file into the class object""" - op = self._read() - self.opts.update(op) - - def addopts(self, opts): - """add more key-value pairs to the data stored by the object""" - self.opts.update(opts) - - def save(self): + 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. """ + try: + iv = int(version) + except ValueError: + 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) 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 Cc: mercurial-devel _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel