diff options
author | Gustav HÃ¥llberg <gustav@gmail.com> | 2010-05-24 20:19:49 +0200 |
---|---|---|
committer | Gustav HÃ¥llberg <gustav@gmail.com> | 2010-05-24 20:19:49 +0200 |
commit | 5fd79c5f5aa2ea962162260e88f274983cb1e032 (patch) | |
tree | 6fe2e6b48565d404250c75990d42b9fbe4901349 | |
parent | d8a700cfaa9da3e0fbcba3c5670432ce760b2f06 (diff) | |
download | stgit-5fd79c5f5aa2ea962162260e88f274983cb1e032.tar.gz |
Repository.rev_parse: support commits, trees, and blobs
-rw-r--r-- | stgit/lib/git.py | 10 |
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): |