From f068cdc5a1a13539c4a1d756ae950aab65f5348b Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Wed, 7 Jul 2010 12:16:13 +0200 Subject: Initially working implementation of short-sha parsing and interpretation, thanks to new gitdb functionality --- lib/git/db.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'lib/git/db.py') 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 -- cgit v1.2.1 From 01ab5b96e68657892695c99a93ef909165456689 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Wed, 7 Jul 2010 17:42:42 +0200 Subject: Added test for GitCmdObjectDB in order to verify the partial_to_complete_sha_hex is working as expected with different input ( it wasn't, of course ;) ) --- lib/git/db.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'lib/git/db.py') diff --git a/lib/git/db.py b/lib/git/db.py index 945031bb..6339569f 100644 --- a/lib/git/db.py +++ b/lib/git/db.py @@ -1,5 +1,8 @@ """Module with our own gitdb implementation - it uses the git command""" -from exc import GitCommandError +from exc import ( + GitCommandError, + BadObject + ) from gitdb.base import ( OInfo, @@ -42,7 +45,7 @@ class GitCmdObjectDB(LooseObjectDB): # { Interface - def partial_to_complete_sha_hex(partial_hexsha): + def partial_to_complete_sha_hex(self, partial_hexsha): """:return: Full binary 20 byte sha from the given partial hexsha :raise AmbiguousObjectName: :raise BadObject: @@ -51,7 +54,7 @@ class GitCmdObjectDB(LooseObjectDB): try: hexsha, typename, size = self._git.get_object_header(partial_hexsha) return hex_to_bin(hexsha) - except GitCommandError: + except (GitCommandError, ValueError): raise BadObject(partial_hexsha) # END handle exceptions -- cgit v1.2.1