git-p4: fix failed submit by skip non-text data files

If the submit contain binary files, it will throw exception and stop submit when try to append diff line description.

This commit will skip non-text data files when exception UnicodeDecodeError thrown.

The skip will not affect actual submit files in the resulting cl,
the diff line description will only appear in submit template,
so you can review what changed before actully submit to p4.

I don't know if add any message here will be helpful for users,
so I choose to just skip binary content, since it already append filename previously.

Signed-off-by: dorgon.chang <dorgonman@hotmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
dorgon.chang 2021-06-21 05:16:13 +00:00 committed by Junio C Hamano
parent ebf3c04b26
commit 54662d5958

View File

@ -1977,8 +1977,11 @@ class P4Submit(Command, P4UserMap):
newdiff += "+%s\n" % os.readlink(newFile)
else:
f = open(newFile, "r")
for line in f.readlines():
newdiff += "+" + line
try:
for line in f.readlines():
newdiff += "+" + line
except UnicodeDecodeError:
pass # Found non-text data and skip, since diff description should only include text
f.close()
return (diff + newdiff).replace('\r\n', '\n')