summaryrefslogtreecommitdiff
path: root/git/db/dulwich/complex.py
diff options
context:
space:
mode:
Diffstat (limited to 'git/db/dulwich/complex.py')
-rw-r--r--git/db/dulwich/complex.py57
1 files changed, 29 insertions, 28 deletions
diff --git a/git/db/dulwich/complex.py b/git/db/dulwich/complex.py
index 1428361a..1c073fc0 100644
--- a/git/db/dulwich/complex.py
+++ b/git/db/dulwich/complex.py
@@ -3,10 +3,10 @@ __all__ = ['DulwichGitODB', 'DulwichGitDB', 'DulwichCompatibilityGitDB']
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
@@ -19,15 +19,16 @@ from dulwich.repo import Repo as DulwichRepo
from dulwich.objects import ShaFile
from git.base import OInfo, OStream
-from git.fun import type_id_to_type_map, type_to_type_id_map
+from git.fun import type_id_to_type_map, type_to_type_id_map
-from cStringIO import StringIO
+from cStringIO import StringIO
import os
class DulwichGitODB(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)
@@ -35,9 +36,9 @@ class DulwichGitODB(PureGitODB):
wd = self.working_dir
else:
wd = os.path.dirname(os.path.dirname(objects_root))
- #END try to figure out good entry for dulwich, which doesn't do an extensive search
+ # END try to figure out good entry for dulwich, which doesn't do an extensive search
self._dw_repo = DulwichRepo(wd)
-
+
def __getattr__(self, attr):
try:
# supply LazyMixin with this call first
@@ -45,46 +46,46 @@ class DulwichGitODB(PureGitODB):
except AttributeError:
# now assume its on the dulwich repository ... for now
return getattr(self._dw_repo, attr)
- #END handle attr
-
+ # END handle attr
+
#{ Object DBR
-
+
def info(self, binsha):
- type_id, uncomp_data = self._dw_repo.object_store.get_raw(binsha)
+ type_id, uncomp_data = self._dw_repo.object_store.get_raw(binsha)
return OInfo(binsha, type_id_to_type_map[type_id], len(uncomp_data))
-
+
def stream(self, binsha):
type_id, uncomp_data = self._dw_repo.object_store.get_raw(binsha)
return OStream(binsha, type_id_to_type_map[type_id], len(uncomp_data), StringIO(uncomp_data))
-
+
#}END object dbr
-
+
#{ Object DBW
-
+
def store(self, istream):
obj = ShaFile.from_raw_string(type_to_type_id_map[istream.type], istream.read())
self._dw_repo.object_store.add_object(obj)
istream.binsha = obj.sha().digest()
return istream
-
+
#}END object dbw
-
-class DulwichGitDB( PureRepositoryPathsMixin, PureConfigurationMixin,
- PureReferencesMixin, PureSubmoduleDB,
- PureIndexDB,
- PureTransportDB, # not fully implemented
- GitCommandMixin,
- CmdHighLevelRepository,
- DulwichGitODB): # must come last, as it doesn't pass on __init__ with super
+class DulwichGitDB(PureRepositoryPathsMixin, PureConfigurationMixin,
+ PureReferencesMixin, PureSubmoduleDB,
+ PureIndexDB,
+ PureTransportDB, # not fully implemented
+ GitCommandMixin,
+ CmdHighLevelRepository,
+ DulwichGitODB): # 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(DulwichGitDB, self).__init__(self.objects_dir)
-
+
class DulwichCompatibilityGitDB(RepoCompatibilityInterfaceNoBare, DulwichGitDB):
+
"""Basic dulwich compatibility database"""
pass
-