aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustav HÃ¥llberg <gustav@gmail.com>2010-05-24 20:19:49 +0200
committerGustav HÃ¥llberg <gustav@gmail.com>2010-05-24 20:19:49 +0200
commit5fd79c5f5aa2ea962162260e88f274983cb1e032 (patch)
tree6fe2e6b48565d404250c75990d42b9fbe4901349
parentd8a700cfaa9da3e0fbcba3c5670432ce760b2f06 (diff)
downloadstgit-5fd79c5f5aa2ea962162260e88f274983cb1e032.tar.gz
Repository.rev_parse: support commits, trees, and blobs
-rw-r--r--stgit/lib/git.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/stgit/lib/git.py b/stgit/lib/git.py
index 65d2a6c..899c1a2 100644
--- a/stgit/lib/git.py
+++ b/stgit/lib/git.py
@@ -581,13 +581,15 @@ class Repository(RunWithEnv):
refs = property(lambda self: self.__refs)
def cat_object(self, sha1):
return self.run(['git', 'cat-file', '-p', sha1]).raw_output()
- def rev_parse(self, rev, discard_stderr = False):
+ def rev_parse(self, rev, discard_stderr = False, object_type = 'commit'):
+ assert object_type in ('commit', 'tree', 'blob')
+ getter = getattr(self, 'get_' + object_type)
try:
- return self.get_commit(self.run(
- ['git', 'rev-parse', '%s^{commit}' % rev]
+ return getter(self.run(
+ ['git', 'rev-parse', '%s^{%s}' % (rev, object_type)]
).discard_stderr(discard_stderr).output_one_line())
except run.RunException:
- raise RepositoryException('%s: No such revision' % rev)
+ raise RepositoryException('%s: No such %s' % (rev, object_type))
def get_blob(self, sha1):
return self.__blobs[sha1]
def get_tree(self, sha1):