Skip to content

Encoding issue with tags in packed-refs file #2064

Description

@benmss

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 acra

Create a Python script with the following content:

import git
repo = git.Repo(".")
print(repo.tags)

Execute the script:

python script.py

Result:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 6216: invalid continuation byte

Activity

  1. Byron commented on Aug 6, 2025

    @Byron
    Member

    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.

  2. added theissue type on Jul 20, 2026
  3. added this to the v4.0 milestone on Jul 26, 2026
  4. Byron commented on Jul 26, 2026

    @Byron
    Member

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions