summaryrefslogtreecommitdiff
path: root/git/db/py
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2011-05-30 16:32:56 +0200
committerSebastian Thiel <byronimo@gmail.com>2011-05-30 16:32:56 +0200
commit1f71ed94578799ee1667ba54b66a369e307f415b (patch)
treef8e1c3a8507b5306a6a04efa94ffec3c22731bcc /git/db/py
parent024adf37acddd6a5d8293b6b5d15795c59a142c0 (diff)
downloadgitpython-1f71ed94578799ee1667ba54b66a369e307f415b.tar.gz
git cmd implementation of repository appears to work, at least this is what the test suggests. Pure python implementation still has some trouble, but this should be very fixable
Diffstat (limited to 'git/db/py')
-rw-r--r--git/db/py/base.py9
-rw-r--r--git/db/py/complex.py16
-rw-r--r--git/db/py/resolve.py3
3 files changed, 15 insertions, 13 deletions
diff --git a/git/db/py/base.py b/git/db/py/base.py
index 74b8beb9..4d9b6e14 100644
--- a/git/db/py/base.py
+++ b/git/db/py/base.py
@@ -8,6 +8,7 @@ from git.db.interface import *
from git.util import (
pool,
join,
+ isfile,
normpath,
abspath,
dirname,
@@ -25,7 +26,8 @@ from git.config import GitConfigParser
from git.exc import (
BadObject,
AmbiguousObjectName,
- InvalidDBRoot
+ InvalidGitRepositoryError,
+ NoSuchPathError
)
from async import ChannelThreadTask
@@ -240,7 +242,7 @@ class PureRepositoryPathsMixin(RepositoryPathsMixin):
epath = abspath(expandvars(expanduser(path or os.getcwd())))
if not exists(epath):
- raise InvalidDBRoot(epath)
+ raise NoSuchPathError(epath)
#END check file
self._working_tree_dir = None
@@ -264,7 +266,7 @@ class PureRepositoryPathsMixin(RepositoryPathsMixin):
# END while curpath
if self._git_path is None:
- raise InvalidDBRoot(epath)
+ raise InvalidGitRepositoryError(epath)
# END path not found
self._bare = self._git_path.endswith(self.repo_dir)
@@ -351,6 +353,7 @@ class PureConfigurationMixin(ConfigurationMixin):
def __init__(self, *args, **kwargs):
"""Verify prereqs"""
+ super(PureConfigurationMixin, self).__init__(*args, **kwargs)
assert hasattr(self, 'git_dir')
def _path_at_level(self, level ):
diff --git a/git/db/py/complex.py b/git/db/py/complex.py
index 9d891537..a51118b3 100644
--- a/git/db/py/complex.py
+++ b/git/db/py/complex.py
@@ -1,6 +1,6 @@
# Copyright (C) 2010, 2011 Sebastian Thiel (byronimo@gmail.com) and contributors
#
-# This module is part of PureGitDB and is released under
+# This module is part of PurePartialGitDB and is released under
# the New BSD License: http://www.opensource.org/licenses/bsd-license.php
from git.db.interface import HighLevelRepository
from base import (
@@ -12,7 +12,7 @@ from base import (
PureAlternatesFileMixin,
PureIndexDB,
)
-
+from transport import PureTransportDB
from resolve import PureReferencesMixin
from loose import PureLooseObjectODB
@@ -35,14 +35,14 @@ from git.exc import (
)
import os
-__all__ = ('PureGitODB', 'PureGitDB', 'PureCompatibilityGitDB')
+__all__ = ('PureGitODB', 'PurePartialGitDB', 'PureCompatibilityGitDB')
class PureGitODB(PureRootPathDB, PureObjectDBW, PureCompoundDB):
"""A git-style object-only database, which contains all objects in the 'objects'
subdirectory.
:note: The type needs to be initialized on the ./objects directory to function,
- as it deals solely with object lookup. Use a PureGitDB type if you need
+ as it deals solely with object lookup. Use a PurePartialGitDB type if you need
reference and push support."""
# Configuration
PackDBCls = PurePackedODB
@@ -103,10 +103,10 @@ class PureGitODB(PureRootPathDB, PureObjectDBW, PureCompoundDB):
-class PureGitDB(PureGitODB,
+class PurePartialGitDB(PureGitODB,
PureRepositoryPathsMixin, PureConfigurationMixin,
PureReferencesMixin, PureSubmoduleDB, PureAlternatesFileMixin,
- PureIndexDB,
+ PureIndexDB, PureTransportDB
# HighLevelRepository Currently not implemented !
):
"""Git like database with support for object lookup as well as reference resolution.
@@ -119,10 +119,10 @@ class PureGitDB(PureGitODB,
def __init__(self, root_path):
"""Initialize ourselves on the .git directory, or the .git/objects directory."""
PureRepositoryPathsMixin._initialize(self, root_path)
- super(PureGitDB, self).__init__(self.objects_dir)
+ super(PurePartialGitDB, self).__init__(self.objects_dir)
-class PureCompatibilityGitDB(PureGitDB, RepoCompatibilityInterface):
+class PureCompatibilityGitDB(PurePartialGitDB, RepoCompatibilityInterface):
"""Pure git database with a compatability layer required by 0.3x code"""
diff --git a/git/db/py/resolve.py b/git/db/py/resolve.py
index 7194149c..7bea779e 100644
--- a/git/db/py/resolve.py
+++ b/git/db/py/resolve.py
@@ -320,8 +320,7 @@ class PureReferencesMixin(ReferencesMixin):
return self.TagReferenceCls.list_items(self)
def tag(self, name):
- return self.tags[name]
-
+ return self.TagReferenceCls(self, self.TagReferenceCls.to_full_path(name))
def commit(self, rev=None):
if rev is None: