gitpython-developers/GitPython

rev_parse does not handle <tag>^{commit} correctly

flichtenheld opened this issue · 4 comments

git rev-parse <tag>^{commit} resolves to the commit that the tag points to.

repo.rev_parse("<tag>^{commit}") says ValueError: Could not accommodate requested object type 'commit', got tag

It should instead return TagObject.object (at least if that is a commit object).

Re-verified that is present in the current release (3.1.44)

Interestingly it tries to resolve the tag when you specify ^{blob} although it is not clear to me when this would ever work given that TagObject.object is usually a commit.

Found from the test suite that <tag>^{} works. So this a usable work-around. Will prepare a patch anyway.

Thanks a lot for digging into this!

I may also add that this implementation is definitely not according to 'spec' and probably just superficially resembles git rev-parse semantics.
Probably it's just good enough for the common cases, which is a reason for issues around it being quite rare overall.