Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Needs better error message when repository is rejected by git (related to safe.directory) #1616

Closed
marioaag opened this issue Jul 17, 2023 · 9 comments

Comments

@marioaag
Copy link

marioaag commented Jul 17, 2023

Initial state:
Executions using the latest version of Git (version 2.39.3), in a repository owned by other user.

Current behavior:
Executing:

repo = git.Repo(dir_path)
last_commit = repo.head.commit

Ambiguos error is reported:

  File "/usr/local/lib/python3.9/site-packages/git/refs/symbolic.py", line 226, in _get_commit
    obj = self._get_object()
  File "/usr/local/lib/python3.9/site-packages/git/refs/symbolic.py", line 219, in _get_object
    return Object.new_from_sha(self.repo, hex_to_bin(self.dereference_recursive(self.repo, self.path)))
  File "/usr/local/lib/python3.9/site-packages/git/objects/base.py", line 94, in new_from_sha
    oinfo = repo.odb.info(sha1)
  File "/usr/local/lib/python3.9/site-packages/git/db.py", line 40, in info
    hexsha, typename, size = self._git.get_object_header(bin_to_hex(binsha))
  File "/usr/local/lib/python3.9/site-packages/git/cmd.py", line 1383, in get_object_header
    return self.__get_object_header(cmd, ref)
  File "/usr/local/lib/python3.9/site-packages/git/cmd.py", line 1370, in __get_object_header
    return self._parse_object_header(cmd.stdout.readline())
  File "/usr/local/lib/python3.9/site-packages/git/cmd.py", line 1329, 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''

Expected behavior:
More clear an specific error message or even better a parameter in git.repo() to handle the dubious ownership

Notes:
Doing some debug found that the new version of Git has enable by default a check for dubious ownership that is not handle gracefully by GitPython.

A work around for this is add an exception in Git to consider the file safe git config --global --add safe.directory <dir path>

@Byron
Copy link
Member

Byron commented Jul 17, 2023

Do I understand correctly that the repository isn't trusted by git and GitPython fails with a dubious, seemingly unrelated error?

@marioaag
Copy link
Author

Correct!

@Byron Byron changed the title ValueError: SHA could not be resolved, git returned: b'' Needs better error message when repository is rejected by git (related to safe.directory) Jul 18, 2023
@Byron
Copy link
Member

Byron commented Jul 18, 2023

Perfect! If you don't mind, could you look at my title and formulate the issue so that it matches the title more? It could be in the form of initial state (a repository owned by someone else), current behaviour, expected behaviour. With that, maybe the issue has a chance to be picked up by someone.

@marioaag
Copy link
Author

Ready! Thanks for the help!

@marioaag
Copy link
Author

Hi @Byron, could you help me to assign the ticket, I will work on it

@Byron
Copy link
Member

Byron commented Nov 23, 2023

Thanks a lot! It’s assigned.

@marioaag
Copy link
Author

marioaag commented Nov 28, 2023

Hi @Byron, pull request generated! #1746

@EliahKagan
Copy link
Contributor

Should this issue be closed as completed (in #1746)?

@Byron
Copy link
Member

Byron commented Dec 23, 2023

Thanks for the reminder!

@Byron Byron closed this as completed Dec 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

3 participants