Skip to content

Commit 4d35f74

Browse files
mbs-cgitster
authored andcommitted
git-p4: fix CR LF handling for utf16 files
Perforce silently replaces LF with CR LF for "utf16" files if the client is a native Windows client. Since git's autocrlf logic does not undo this transformation for UTF-16 encoded files, git-p4 replaces CR LF with LF during the sync if the file type "utf16" is detected and the Perforce client platform indicates that this conversion is performed. Windows only runs on little-endian architectures, therefore the encoding of the byte stream received from the Perforce client is UTF-16-LE and the relevant byte sequence is 0D 00 0A 00. Signed-off-by: Moritz Baumann <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent bbea4dc commit 4d35f74

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

git-p4.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3148,7 +3148,7 @@ def streamOneP4File(self, file, contents):
31483148
raise e
31493149
else:
31503150
if p4_version_string().find('/NT') >= 0:
3151-
text = text.replace(b'\r\n', b'\n')
3151+
text = text.replace(b'\x0d\x00\x0a\x00', b'\x0a\x00')
31523152
contents = [text]
31533153

31543154
if type_base == "apple":

0 commit comments

Comments
 (0)