Open
Description
I'm not sure this is a proper way to use TagReferences
, but it's definitely unexpected. This time I'm using GitPython
installed by pypi.
I have this nice tag:
In [8]: tag
Out[8]: <git.TagReference "refs/tags/PROMOTED_1501131729_MKT15_01_12_QU_1">
I can get a lot of info out of it:
In [9]: tag.object.hexsha
Out[9]: u'dca63c5c7e6aab3cd4934e60230ec3419ab87071'
In [12]: tag.name
Out[12]: 'PROMOTED_1501131729_MKT15_01_12_QU_1'
In [13]: tag.object
Out[13]: <git.TagObject "dca63c5c7e6aab3cd4934e60230ec3419ab87071">
In [14]: tag.ref
TypeError: PROMOTED_1501131729_MKT15_01_12_QU_1 is a detached symbolic reference as it points to 'dca63c5c7e6aab3cd4934e60230ec3419ab87071'
But this fails:
In [15]: tag.commit
---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-15-2431a6e80cf9> in <module>()
----> 1 tag.commit
/home/mdione/local/lib/python2.7/site-packages/git/refs/tag.pyc in commit(self)
29 elif obj.type == "tag":
30 # it is a tag object which carries the commit as an object - we can point to anything
---> 31 return obj.object
32 else:
33 raise ValueError("Tag %s points to a Blob or Tree - have never seen that before" % self)
/home/mdione/local/lib/python2.7/site-packages/gitdb/util.pyc in __getattr__(self, attr)
--> 237 self._set_cache_(attr)
238 # will raise in case the cache was not created
239 return object.__getattribute__(self, attr)
/home/mdione/local/lib/python2.7/site-packages/git/objects/tag.pyc in _set_cache_(self, attr)
54 if attr in TagObject.__slots__:
55 ostream = self.repo.odb.stream(self.binsha)
---> 56 lines = ostream.read().decode(defenc).splitlines()
57
58 obj, hexsha = lines[0].split(" ") # object <hexsha>
/usr/lib/python2.7/encodings/utf_8.pyc in decode(input, errors)
14
15 def decode(input, errors='strict'):
---> 16 return codecs.utf_8_decode(input, errors, True)
17
18 class IncrementalEncoder(codecs.IncrementalEncoder):
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa8 in position 108: invalid start byte
Unluckily this is happening with an internal repo and I don't know how to even try to reproduce with a public one. Meanwhile I can workaround it by using tag.object.hexsha
, which is what I wanted.