4

I want to get the commit object of my repo's HEAD. When I try to call repo.head.commit however, I get the following error:

Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "C:\Python36-32\lib\site-packages\git\refs\symbolic.py", line 200, in _get_commit
 obj = self._get_object()
 File "C:\Python36-32\lib\site-packages\git\refs\symbolic.py", line 193, in _get_object
 return Object.new_from_sha(self.repo, hex_to_bin(self.dereference_recursive(self.repo, self.path)))
 File "C:\Python36-32\lib\site-packages\git\objects\base.py", line 64, in new_from_sha
 oinfo = repo.odb.info(sha1)
 File "C:\Python36-32\lib\site-packages\git\db.py", line 37, in info
 hexsha, typename, size = self._git.get_object_header(bin_to_hex(sha))
 File "C:\Python36-32\lib\site-packages\git\cmd.py", line 1073, in get_object_header
 return self.__get_object_header(cmd, ref)
 File "C:\Python36-32\lib\site-packages\git\cmd.py", line 1062, in __get_object_header
 return self._parse_object_header(cmd.stdout.readline())
 File "C:\Python36-32\lib\site-packages\git\cmd.py", line 1024, in _parse_object_header
 raise ValueError("SHA could not be resolved, git returned: %r" % (header_line.strip()))
ValueError: SHA could not be resolved, git returned: b''

Calling repo.head.commit a second time (and every time afterwards), I then get the following error:

Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "C:\Python36-32\lib\site-packages\git\refs\symbolic.py", line 200, in _get_commit
 obj = self._get_object()
 File "C:\Python36-32\lib\site-packages\git\refs\symbolic.py", line 193, in _get_object
 return Object.new_from_sha(self.repo, hex_to_bin(self.dereference_recursive(self.repo, self.path)))
 File "C:\Python36-32\lib\site-packages\git\objects\base.py", line 64, in new_from_sha
 oinfo = repo.odb.info(sha1)
 File "C:\Python36-32\lib\site-packages\git\db.py", line 37, in info
 hexsha, typename, size = self._git.get_object_header(bin_to_hex(sha))
 File "C:\Python36-32\lib\site-packages\git\cmd.py", line 1073, in get_object_header
 return self.__get_object_header(cmd, ref)
 File "C:\Python36-32\lib\site-packages\git\cmd.py", line 1061, in __get_object_header
 cmd.stdin.flush()

Additional Information: repo.head -> <git.HEAD "HEAD">

I'm on a Windows 10 environment. This may be related to another question of mine: Git Not Working with Ubuntu -> Windows Samba Shared Directory

asked Jan 30, 2018 at 1:08

2 Answers 2

3

Initializing the repo object like this worked for me:

import git
repo = git.Repo('.', odbt=git.db.GitDB)

It seems there might be some caveats to this solution though. More details can be found here.

answered Jun 24, 2020 at 13:43
Sign up to request clarification or add additional context in comments.

Comments

0

The problem was arising from my directory being located on a UNC path and was fixed by updating my git version.

Git not working with Ubuntu → Windows Samba shared directory

answered Jan 30, 2018 at 16:56

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.