summaryrefslogtreecommitdiff
path: root/git/index/fun.py
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2015-01-06 16:11:34 +0100
committerSebastian Thiel <byronimo@gmail.com>2015-01-06 16:11:34 +0100
commit56e942318f3c493c8dcd4759f806034331ebeda5 (patch)
tree82cdca65cd197f36ea3680171186e0ddcf234266 /git/index/fun.py
parentd46e3fe9cb0dea2617cd9231d29bf6919b0f1e91 (diff)
parent68f8a43d1b643318732f30ee1cd75e1d315a4537 (diff)
downloadgitpython-56e942318f3c493c8dcd4759f806034331ebeda5.tar.gz
Merge branch 'py3' into 0.3
Conflicts: git/refs/log.py
Diffstat (limited to 'git/index/fun.py')
-rw-r--r--git/index/fun.py21
1 files changed, 11 insertions, 10 deletions
diff --git a/git/index/fun.py b/git/index/fun.py
index eec90519..f0dee961 100644
--- a/git/index/fun.py
+++ b/git/index/fun.py
@@ -12,7 +12,7 @@ from stat import (
S_IFGITLINK = S_IFLNK | S_IFDIR # a submodule
-from cStringIO import StringIO
+from io import BytesIO
from git.util import IndexFileSHA1Writer
from git.exc import UnmergedEntriesError
@@ -22,7 +22,7 @@ from git.objects.fun import (
traverse_trees_recursive
)
-from typ import (
+from .typ import (
BaseIndexEntry,
IndexEntry,
CE_NAMEMASK,
@@ -30,13 +30,14 @@ from typ import (
)
CE_NAMEMASK_INV = ~CE_NAMEMASK
-from util import (
+from .util import (
pack,
unpack
)
from gitdb.base import IStream
from gitdb.typ import str_tree_type
+from git.compat import defenc
__all__ = ('write_cache', 'read_cache', 'write_tree_from_cache', 'entry_key',
'stat_mode_to_index_mode', 'S_IFGITLINK')
@@ -49,7 +50,7 @@ def stat_mode_to_index_mode(mode):
return S_IFLNK
if S_ISDIR(mode) or S_IFMT(mode) == S_IFGITLINK: # submodules
return S_IFGITLINK
- return S_IFREG | 0644 | (mode & 0100) # blobs with or without executable bit
+ return S_IFREG | 0o644 | (mode & 0o100) # blobs with or without executable bit
def write_cache(entries, stream, extension_data=None, ShaStreamCls=IndexFileSHA1Writer):
@@ -72,7 +73,7 @@ def write_cache(entries, stream, extension_data=None, ShaStreamCls=IndexFileSHA1
# header
version = 2
- write("DIRC")
+ write(b"DIRC")
write(pack(">LL", version, len(entries)))
# body
@@ -86,9 +87,9 @@ def write_cache(entries, stream, extension_data=None, ShaStreamCls=IndexFileSHA1
flags = plen | (entry[2] & CE_NAMEMASK_INV) # clear possible previous values
write(pack(">LLLLLL20sH", entry[6], entry[7], entry[0],
entry[8], entry[9], entry[10], entry[1], flags))
- write(path)
+ write(path.encode(defenc))
real_size = ((tell() - beginoffset + 8) & ~7)
- write("\0" * ((beginoffset + real_size) - tell()))
+ write(b"\0" * ((beginoffset + real_size) - tell()))
# END for each entry
# write previously cached extensions data
@@ -102,7 +103,7 @@ def write_cache(entries, stream, extension_data=None, ShaStreamCls=IndexFileSHA1
def read_header(stream):
"""Return tuple(version_long, num_entries) from the given stream"""
type_id = stream.read(4)
- if type_id != "DIRC":
+ if type_id != b"DIRC":
raise AssertionError("Invalid index file header: %r" % type_id)
version, num_entries = unpack(">LL", stream.read(4 * 2))
@@ -142,7 +143,7 @@ def read_cache(stream):
(dev, ino, mode, uid, gid, size, sha, flags) = \
unpack(">LLLLLL20sH", read(20 + 4 * 6 + 2))
path_size = flags & CE_NAMEMASK
- path = read(path_size)
+ path = read(path_size).decode(defenc)
real_size = ((tell() - beginoffset + 8) & ~7)
read((beginoffset + real_size) - tell())
@@ -218,7 +219,7 @@ def write_tree_from_cache(entries, odb, sl, si=0):
# END for each entry
# finally create the tree
- sio = StringIO()
+ sio = BytesIO()
tree_to_stream(tree_items, sio.write)
sio.seek(0)