コード例 #1
0
ファイル: shelve.py プロジェクト: mitrandir77/eden
    def load(cls, repo):
        version = cls._getversion(repo)
        if version < cls._version:
            d = cls._readold(repo)
        elif version == cls._version:
            d = scmutil.simplekeyvaluefile(
                repo.localvfs, cls._filename).read(firstlinenonkeyval=True)
        else:
            raise error.Abort(
                _("this version of shelve is incompatible "
                  "with the version used in this repo"))

        cls._verifyandtransform(d)
        try:
            obj = cls()
            obj.name = d["name"]
            obj.wctx = repo[d["originalwctx"]]
            obj.pendingctx = repo[d["pendingctx"]]
            obj.parents = d["parents"]
            obj.nodestoremove = d["nodestoremove"]
            obj.branchtorestore = d.get("branchtorestore", "")
            obj.keep = d.get("keep") == cls._keep
            obj.activebookmark = ""
            if d.get("activebook", "") != cls._noactivebook:
                obj.activebookmark = d.get("activebook", "")
            obj.obsshelve = d["obsshelve"] == cls._obsbased
        except (error.RepoLookupError, KeyError) as err:
            raise error.CorruptedState(str(err))

        return obj
コード例 #2
0
ファイル: shelve.py プロジェクト: mitrandir77/eden
 def _verifyandtransform(cls, d):
     """Some basic shelvestate syntactic verification and transformation"""
     try:
         d["originalwctx"] = nodemod.bin(d["originalwctx"])
         d["pendingctx"] = nodemod.bin(d["pendingctx"])
         d["parents"] = cls._parsenodelist(d["parents"])
         d["nodestoremove"] = cls._parsenodelist(d["nodestoremove"])
     except (ValueError, TypeError, KeyError) as err:
         raise error.CorruptedState(str(err))
コード例 #3
0
ファイル: shelve.py プロジェクト: mitrandir77/eden
 def _getversion(cls, repo):
     """Read version information from shelvestate file"""
     fp = repo.localvfs(cls._filename)
     try:
         version = int(fp.readline().strip())
     except ValueError as err:
         raise error.CorruptedState(str(err))
     finally:
         fp.close()
     return version