diff options
Diffstat (limited to 'git/db/pygit2/complex.py')
-rw-r--r-- | git/db/pygit2/complex.py | 59 |
1 files changed, 30 insertions, 29 deletions
diff --git a/git/db/pygit2/complex.py b/git/db/pygit2/complex.py index cf845ff6..78734124 100644 --- a/git/db/pygit2/complex.py +++ b/git/db/pygit2/complex.py @@ -3,10 +3,10 @@ __all__ = ['Pygit2GitODB', 'Pygit2GitDB', 'Pygit2CompatibilityGitDB'] from git.db.py.complex import PureGitODB from git.db.py.base import ( - PureRepositoryPathsMixin, - PureConfigurationMixin, - PureIndexDB, - ) + PureRepositoryPathsMixin, + PureConfigurationMixin, + PureIndexDB, +) from git.db.py.resolve import PureReferencesMixin from git.db.py.transport import PureTransportDB from git.db.py.submodule import PureSubmoduleDB @@ -20,13 +20,14 @@ from git.base import OInfo, OStream from git.fun import type_id_to_type_map, type_to_type_id_map from git.util import hex_to_bin -from cStringIO import StringIO +from cStringIO import StringIO import os class Pygit2GitODB(PureGitODB): + """A full fledged database to read and write object files from all kinds of sources.""" - + def __init__(self, objects_root): """Initalize this instance""" PureGitODB.__init__(self, objects_root) @@ -34,11 +35,11 @@ class Pygit2GitODB(PureGitODB): wd = self.git_dir else: wd = os.path.dirname(objects_root) - #END try to figure out good entry for pygit2 - it needs the .gitdir + # END try to figure out good entry for pygit2 - it needs the .gitdir print objects_root print wd self._py2_repo = Pygit2Repo(wd) - + def __getattr__(self, attr): try: # supply LazyMixin with this call first @@ -46,21 +47,21 @@ class Pygit2GitODB(PureGitODB): except AttributeError: # now assume its on the pygit2 repository ... for now return getattr(self._py2_repo, attr) - #END handle attr - + # END handle attr + #{ Object DBR - + def info(self, binsha): - type_id, uncomp_data = self._py2_repo.read(binsha) + type_id, uncomp_data = self._py2_repo.read(binsha) return OInfo(binsha, type_id_to_type_map[type_id], len(uncomp_data)) - + def stream(self, binsha): type_id, uncomp_data = self._py2_repo.read(binsha) return OStream(binsha, type_id_to_type_map[type_id], len(uncomp_data), StringIO(uncomp_data)) - - # #}END object dbr - # - # #{ Object DBW + + # }END object dbr + # + # { Object DBW def store(self, istream): # TODO: remove this check once the required functionality was merged in pygit2 if hasattr(self._py2_repo, 'write'): @@ -68,26 +69,26 @@ class Pygit2GitODB(PureGitODB): return istream else: return super(Pygit2GitODB, self).store(istream) - #END handle write support - + # END handle write support + #}END object dbw - -class Pygit2GitDB( PureRepositoryPathsMixin, PureConfigurationMixin, - PureReferencesMixin, PureSubmoduleDB, - PureIndexDB, - PureTransportDB, # not fully implemented - GitCommandMixin, - CmdHighLevelRepository, - Pygit2GitODB): # must come last, as it doesn't pass on __init__ with super +class Pygit2GitDB(PureRepositoryPathsMixin, PureConfigurationMixin, + PureReferencesMixin, PureSubmoduleDB, + PureIndexDB, + PureTransportDB, # not fully implemented + GitCommandMixin, + CmdHighLevelRepository, + Pygit2GitODB): # must come last, as it doesn't pass on __init__ with super + def __init__(self, root_path): """Initialize ourselves on the .git directory, or the .git/objects directory.""" PureRepositoryPathsMixin._initialize(self, root_path) super(Pygit2GitDB, self).__init__(self.objects_dir) - + class Pygit2CompatibilityGitDB(RepoCompatibilityInterface, Pygit2GitDB): + """Basic pygit2 compatibility database""" pass - |