git-p4: fix submit in non --prepare-p4-only mode

b4073bb3 (git-p4: Do not include diff in spec file when just preparing p4, 2014-05-24) broke git p4 submit, here is a proper fix, including proper handling for windows end of lines. Signed-off-by: Maxime Coste <frrrwww@gmail.com> Acked-by: Pete Wyckoff <pw@padd.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Maxime Coste committed Jun 11, 2014 at 14:09 UTC e2a892ee05ae5d9675881beb6dd5f90ca4677b0d
1 file changed +6 -6
git-p4.py
+6 -6
@@ -1238,7 +1238,7 @@ class P4Submit(Command, P4UserMap):
1238 if response == 'n':
1239 return False
1240
1241 - def get_diff_description(self, editedFiles):
1241 + def get_diff_description(self, editedFiles, filesToAdd):
1242 # diff
1243 if os.environ.has_key("P4DIFF"):
1244 del(os.environ["P4DIFF"])
@@ -1258,7 +1258,7 @@ class P4Submit(Command, P4UserMap):
1258 newdiff += "+" + line
1259 f.close()
1260
1261 - return diff + newdiff
1261 + return (diff + newdiff).replace('\r\n', '\n')
1262
1263 def applyCommit(self, id):
1264 """Apply one commit, return True if it succeeded."""
@@ -1422,10 +1422,10 @@ class P4Submit(Command, P4UserMap):
1422 separatorLine = "######## everything below this line is just the diff #######\n"
1423 if not self.prepare_p4_only:
1424 submitTemplate += separatorLine
1425 - submitTemplate += self.get_diff_description(editedFiles)
1425 + submitTemplate += self.get_diff_description(editedFiles, filesToAdd)
1426
1427 (handle, fileName) = tempfile.mkstemp()
1428 - tmpFile = os.fdopen(handle, "w+")
1428 + tmpFile = os.fdopen(handle, "w+b")
1429 if self.isWindows:
1430 submitTemplate = submitTemplate.replace("\n", "\r\n")
1431 tmpFile.write(submitTemplate)
@@ -1475,9 +1475,9 @@ class P4Submit(Command, P4UserMap):
1475 tmpFile = open(fileName, "rb")
1476 message = tmpFile.read()
1477 tmpFile.close()
1478 - submitTemplate = message[:message.index(separatorLine)]
1478 if self.isWindows:
1480 - submitTemplate = submitTemplate.replace("\r\n", "\n")
1479 + message = message.replace("\r\n", "\n")
1480 + submitTemplate = message[:message.index(separatorLine)]
1481 p4_write_pipe(['submit', '-i'], submitTemplate)
1482
1483 if self.preserveUser: