diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2010-07-07 17:43:36 +0200 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2010-07-07 17:43:36 +0200 |
commit | ca288d443f4fc9d790eecb6e1cdf82b6cdd8dc0d (patch) | |
tree | 647089e9f091411c69ff4ee62747c53606671485 /lib/git/db.py | |
parent | a4287f65878000b42d11704692f9ea3734014b4c (diff) | |
parent | 01ab5b96e68657892695c99a93ef909165456689 (diff) | |
download | gitpython-ca288d443f4fc9d790eecb6e1cdf82b6cdd8dc0d.tar.gz |
Merge branch 'revparse'
Diffstat (limited to 'lib/git/db.py')
-rw-r--r-- | lib/git/db.py | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/lib/git/db.py b/lib/git/db.py index c36446d0..6339569f 100644 --- a/lib/git/db.py +++ b/lib/git/db.py @@ -1,11 +1,18 @@ -"""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, + BadObject + ) + 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 +42,20 @@ class GitCmdObjectDB(LooseObjectDB): t = self._git.stream_object_data(bin_to_hex(sha)) return OStream(*t) + + # { Interface + + def partial_to_complete_sha_hex(self, 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, ValueError): + raise BadObject(partial_hexsha) + # END handle exceptions + + #} END interface |