diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2010-07-07 12:16:13 +0200 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2010-07-07 12:16:13 +0200 |
commit | f068cdc5a1a13539c4a1d756ae950aab65f5348b (patch) | |
tree | 0c4d4a2e9a355d2368818e97ae4643cbfb40e3a8 /lib/git/db.py | |
parent | 9059525a75b91e6eb6a425f1edcc608739727168 (diff) | |
download | gitpython-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.py | 27 |
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 |