aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gbp/git/repository.py14
-rw-r--r--tests/test_GitRepository.py21
2 files changed, 35 insertions, 0 deletions
diff --git a/gbp/git/repository.py b/gbp/git/repository.py
index 2fcc12cc..024a3775 100644
--- a/gbp/git/repository.py
+++ b/gbp/git/repository.py
@@ -618,6 +618,20 @@ class GitRepository(object):
if ret:
raise GitRepositoryError("Can't write out current index")
return tree[0].strip()
+
+ def get_obj_type(self, obj):
+ """
+ Get type of a git repository object
+
+ @param obj: repository object
+ @type obj: C{str}
+ @return: type of the repository object
+ @rtype: C{str}
+ """
+ out, ret = self.__git_getoutput('cat-file', args=['-t', obj])
+ if ret:
+ raise GitRepositoryError("Not a Git repository object: '%s'" % obj)
+ return out[0].strip()
#}
def get_config(self, name):
diff --git a/tests/test_GitRepository.py b/tests/test_GitRepository.py
index ada3a016..4367f936 100644
--- a/tests/test_GitRepository.py
+++ b/tests/test_GitRepository.py
@@ -254,6 +254,27 @@ def test_delete_tag():
False
"""
+def test_get_obj_type():
+ """
+ Find commit SHA1 related to tags
+
+ Methods tested:
+ - L{gbp.git.GitRepository.create_tag}
+ - L{gbp.git.GitRepository.get_obj_type}
+ - L{gbp.git.GitRepository.delete_tag}
+
+ >>> import gbp.git
+ >>> repo = gbp.git.GitRepository(repo_dir)
+ >>> repo.create_tag("tag3", "tag msg")
+ >>> repo.get_obj_type("tag3")
+ 'tag'
+ >>> repo.get_obj_type("HEAD")
+ 'commit'
+ >>> repo.get_obj_type("HEAD:testfile")
+ 'blob'
+ >>> repo.delete_tag("tag3")
+ """
+
def test_list_files():
"""
List files in the index