# HG changeset patch # User Durham Goode # Date 1506423380 25200 # Node ID 0c3e3810cdb60b70db3e301225c7af584fc478b0 # Parent c36c3fa7d35b0aa1c29d316927b21f77ecc809b8 dirstate: move parent reading to the dirstatemap class As part of moving dirstate storage logic to a separate class, let's move the function that reads the parents from the file. This will allow extensions to write dirstate's that store the parents in other ways. Differential Revision: https://phab.mercurial-scm.org/D758 diff -r c36c3fa7d35b -r 0c3e3810cdb6 mercurial/dirstate.py --- a/mercurial/dirstate.py Tue Sep 26 03:56:20 2017 -0700 +++ b/mercurial/dirstate.py Tue Sep 26 03:56:20 2017 -0700 @@ -186,19 +186,7 @@ @propertycache def _pl(self): - try: - fp = self._map._opendirstatefile() - st = fp.read(40) - fp.close() - l = len(st) - if l == 40: - return st[:20], st[20:40] - elif l > 0 and l < 40: - raise error.Abort(_('working directory state appears damaged!')) - except IOError as err: - if err.errno != errno.ENOENT: - raise - return [nullid, nullid] + return self._map.parents() @propertycache def _dirs(self): @@ -1381,3 +1369,17 @@ self._pendingmode = mode return fp + def parents(self): + try: + fp = self._opendirstatefile() + st = fp.read(40) + fp.close() + l = len(st) + if l == 40: + return st[:20], st[20:40] + elif l > 0 and l < 40: + raise error.Abort(_('working directory state appears damaged!')) + except IOError as err: + if err.errno != errno.ENOENT: + raise + return [nullid, nullid]