Skip to content
  • John Keeping's avatar
    git-remote-testpy: fix path hashing on Python 3 · 3ac221a7
    John Keeping authored and Junio C Hamano's avatar Junio C Hamano committed
    When this change was originally made (0846b0c9
    
     - git-remote-testpy:
    hash bytes explicitly , I didn't realise that the "hex" encoding we
    chose is a "bytes to bytes" encoding so it just fails with an error
    on Python 3 in the same way as the original code.
    
    It is not possible to provide a single code path that works on
    Python 2 and Python 3 since Python 2.x will attempt to decode the
    string before encoding it, which fails for strings that are not
    valid in the default encoding.  Python 3.1 introduced the
    "surrogateescape" error handler which handles this correctly and
    permits a bytes -> unicode -> bytes round-trip to be lossless.  As
    the original came from reading the filesystem path, we convert them
    back into the original bytes encoded in sys.getfilesystemencoding().
    
    At this point Python 3.0 is unsupported so we don't go out of our
    way to try to support it.
    
    Helped-by: default avatarMichael Haggerty <mhagger@alum.mit.edu>
    Signed-off-by: default avatarJohn Keeping <john@keeping.me.uk>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    3ac221a7