Skip to content

Crash with unicode path #761

Description

@vtsisyk

Hi, I ran into a problem that this library doesn't support unicode in path

I use:

  1. Debian 9
  2. Python 3.5.3
  3. GitPython==2.1.10 (installed by pip3 install GitPython command)

i found old issue, similar to mine, but it doesn't helped me:
#532

Everything works just fine if i will use path without cyrillic letters.
Code what doesn't work:

#!/usr/bin/python3
import git
def main():

    repo = git.Repo.clone_from("https://github.com/gitpython-developers/GitPython.git",
        "/home/vlad/AltSTU-Submodules/Диплом/Microcontroller-Unit-Testing/scripts/")

if __name__ == '__main__':
    main()
Traceback (most recent call last):
  File "gitl.py", line 13, in <module>
    main()
  File "gitl.py", line 9, in main
    "/home/vlad/AltSTU-Submodules/Диплом/Microcontroller-Unit-Testing/scripts/")
  File "/home/vlad/.local/lib/python3.5/site-packages/git/repo/base.py", line 982, in clone_from
    return cls._clone(git, url, to_path, GitCmdObjectDB, progress, **kwargs)
  File "/home/vlad/.local/lib/python3.5/site-packages/git/repo/base.py", line 933, in _clone
    finalize_process(proc, stderr=stderr)
  File "/home/vlad/.local/lib/python3.5/site-packages/git/util.py", line 333, in finalize_process
    proc.wait(**kwargs)
  File "/home/vlad/.local/lib/python3.5/site-packages/git/cmd.py", line 402, in wait
    stderr = force_bytes(stderr)
  File "/home/vlad/.local/lib/python3.5/site-packages/gitdb/utils/encoding.py", line 16, in force_bytes
    return data.encode(encoding)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 54-59: ordinal not in range(128)

Activity

  1. Byron commented on Jun 5, 2018

    @Byron
    Member

    Back in the days when this library was originally conceived, it was very easy to get text encodings wrong, unfortunately.
    Given the current state of affairs, is there any good way to deal with this in what I would call 'modern' python?
    After all, the actual OS encoding can only be guessed if it is not provided from the outside, and today one might argue that utf-8 is a better default than ascii.

  2. vtsisyk commented on Jun 7, 2018

    @vtsisyk
    Author

    Well, as far as i know, python 3 uses UTF-8 by default, so adding

    # -*- coding: utf-8 -*-
    

    to my code didn't worked out. I don't know where to look for this bug: in system locale configuration or in library. Can you confirm that, this actually a bug in library?

  3. Byron commented on Jun 10, 2018

    @Byron
    Member

    It is a problem with GitPython as it tries to decode something that is not ascii encoded as ascii.
    The coding declaration you provided tells python how to decode source code files while making sense of them, and thus not affect the runtime.

  4. brizjin commented on Aug 13, 2018

    @brizjin

    I have the same error in GitPython 2.1.11. Is there any solutions?

  5. Byron commented on Oct 14, 2018

    @Byron
    Member

    @brizjin I don't think there is unless someone contributes a patch.

  6. Harmon758 commented on Feb 18, 2020

    @Harmon758
    Member

    This should be fixed with ebf4656 (#955) in v3.0.5. See #920.

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

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions