From 9c272abea2c837e4725c37f5c0467f83f3700cd5 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Mon, 20 Jul 2015 08:51:41 +0200 Subject: fix(encoding): in untracked_files() and index * untracked_files could, if there were spaces in the path returned, re-rencode the previously decoded unicode string thanks to a `decode("string_escape")` call. Now re-encode into utf-8 afterwards - added test to assure this works indeed * IndexFile.add() didn't handle unicode correctly and would write broken index files. The solution was to compute the path length after encoding it into utf-8 bytes, not before ... . Closes #320 --- git/repo/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'git/repo') diff --git a/git/repo/base.py b/git/repo/base.py index 8b8f8db8..cea88f39 100644 --- a/git/repo/base.py +++ b/git/repo/base.py @@ -625,7 +625,7 @@ class Repo(object): filename = line[len(prefix):].rstrip('\n') # Special characters are escaped if filename[0] == filename[-1] == '"': - filename = filename[1:-1].decode('string_escape') + filename = filename[1:-1].decode('string_escape').decode(defenc) untracked_files.append(filename) finalize_process(proc) return untracked_files -- cgit v1.2.3