Encoding issue with tags in packed-refs file #2064
Copy link
Copy link
Labels
Milestone
Description
Tags found in the packed-refs file that can be created by the Git command git pack-refs do not have to be UTF8 encoded. In these cases, GitPython fails to read these tags due to assuming they should be UTF8 compatible.
The source for this issue is found here:
https://github.com/gitpython-developers/GitPython/blob/main/git/refs/symbolic.py#L124
with open(cls._get_packed_refs_path(repo), "rt", encoding="UTF-8") as fp:A working example (using a repository with a non-utf8 tag):
git clone https://github.com/ACRA/acra
cd acraCreate a Python script with the following content:
import git
repo = git.Repo(".")
print(repo.tags)Execute the script:
python script.pyResult:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 6216: invalid continuation byte
Reactions are currently unavailable
Activity
Byron commentedon Aug 6, 2025
Thanks for reporting!
GitPython absolutely has a problem with encodings, in that it should use bytes in most places where it now uses strings, and the same is true for filesystem paths.
Byron commentedon Jul 26, 2026
When reviewing #2190 (comment) I realize that this can't be fixed properly without changing the types that are created by the ref traversal, after all, these can't have an encoding attached to them anymore.
So no need to attempt this in V3.
fix(refs): preserve non-UTF-8 names at native API boundaries (#2064)