summaryrefslogtreecommitdiff
path: root/git/index
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2015-07-29 18:29:03 +0200
committerSebastian Thiel <byronimo@gmail.com>2015-07-29 18:29:03 +0200
commit7ab12b403207bb46199f46d5aaa72d3e82a3080d (patch)
tree807987529384fd80af59443772e2fae349243ff7 /git/index
parent8324c4b38cf37af416833d36696577d8d35dce7f (diff)
downloadgitpython-7ab12b403207bb46199f46d5aaa72d3e82a3080d.tar.gz
fix(index):allow adding non-unicode paths to index
This issue only surfaced in python 2, in case paths containing unicode characters were not actual unicode objects. In python 3, this was never the issue. Closes #331
Diffstat (limited to 'git/index')
-rw-r--r--git/index/fun.py5
1 files changed, 3 insertions, 2 deletions
diff --git a/git/index/fun.py b/git/index/fun.py
index 9ae46861..c1026fd6 100644
--- a/git/index/fun.py
+++ b/git/index/fun.py
@@ -41,7 +41,8 @@ from gitdb.base import IStream
from gitdb.typ import str_tree_type
from git.compat import (
defenc,
- force_text
+ force_text,
+ force_bytes
)
S_IFGITLINK = S_IFLNK | S_IFDIR # a submodule
@@ -124,7 +125,7 @@ def write_cache(entries, stream, extension_data=None, ShaStreamCls=IndexFileSHA1
write(entry[4]) # ctime
write(entry[5]) # mtime
path = entry[3]
- path = path.encode(defenc)
+ path = force_bytes(path, encoding=defenc)
plen = len(path) & CE_NAMEMASK # path length
assert plen == len(path), "Path %s too long to fit into index" % entry[3]
flags = plen | (entry[2] & CE_NAMEMASK_INV) # clear possible previous values