summaryrefslogtreecommitdiff
path: root/lib/git/db.py
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2010-07-07 12:16:13 +0200
committerSebastian Thiel <byronimo@gmail.com>2010-07-07 12:16:13 +0200
commitf068cdc5a1a13539c4a1d756ae950aab65f5348b (patch)
tree0c4d4a2e9a355d2368818e97ae4643cbfb40e3a8 /lib/git/db.py
parent9059525a75b91e6eb6a425f1edcc608739727168 (diff)
downloadgitpython-f068cdc5a1a13539c4a1d756ae950aab65f5348b.tar.gz
Initially working implementation of short-sha parsing and interpretation, thanks to new gitdb functionality
Diffstat (limited to 'lib/git/db.py')
-rw-r--r--lib/git/db.py27
1 files changed, 24 insertions, 3 deletions
diff --git a/lib/git/db.py b/lib/git/db.py
index c36446d0..945031bb 100644
--- a/lib/git/db.py
+++ b/lib/git/db.py
@@ -1,11 +1,15 @@
-"""Module with our own gitdb implementation - it uses the git command"""
+"""Module with our own gitdb implementation - it uses the git command"""
+from exc import GitCommandError
+
from gitdb.base import (
OInfo,
OStream
)
-from gitdb.util import bin_to_hex
-
+from gitdb.util import (
+ bin_to_hex,
+ hex_to_bin
+ )
from gitdb.db import GitDB
from gitdb.db import LooseObjectDB
@@ -35,3 +39,20 @@ class GitCmdObjectDB(LooseObjectDB):
t = self._git.stream_object_data(bin_to_hex(sha))
return OStream(*t)
+
+ # { Interface
+
+ def partial_to_complete_sha_hex(partial_hexsha):
+ """:return: Full binary 20 byte sha from the given partial hexsha
+ :raise AmbiguousObjectName:
+ :raise BadObject:
+ :note: currently we only raise BadObject as git does not communicate
+ AmbiguousObjects separately"""
+ try:
+ hexsha, typename, size = self._git.get_object_header(partial_hexsha)
+ return hex_to_bin(hexsha)
+ except GitCommandError:
+ raise BadObject(partial_hexsha)
+ # END handle exceptions
+
+ #} END interface