git-p4: show Perforce error to the user

During "git p4 clone" if p4 process returns an error from the server,
it will store the message in the 'err' variable. Then it will send a
text command "die-now" to git-fast-import. However, git-fast-import
raises an exception: "fatal: Unsupported command: die-now" and err is
never displayed. This patch ensures that err is shown to the end user.

Signed-off-by: Fahad Alrashed <fahad@keylock.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Fahad Alrashed 2024-05-08 22:11:05 +00:00 committed by Junio C Hamano
parent 786a3e4b8d
commit 55702c543e

View file

@ -3253,17 +3253,19 @@ def streamP4FilesCb(self, marshalled):
if self.stream_have_file_info: if self.stream_have_file_info:
if "depotFile" in self.stream_file: if "depotFile" in self.stream_file:
f = self.stream_file["depotFile"] f = self.stream_file["depotFile"]
# force a failure in fast-import, else an empty try:
# commit will be made # force a failure in fast-import, else an empty
self.gitStream.write("\n") # commit will be made
self.gitStream.write("die-now\n") self.gitStream.write("\n")
self.gitStream.close() self.gitStream.write("die-now\n")
# ignore errors, but make sure it exits first self.gitStream.close()
self.importProcess.wait() # ignore errors, but make sure it exits first
if f: self.importProcess.wait()
die("Error from p4 print for %s: %s" % (f, err)) finally:
else: if f:
die("Error from p4 print: %s" % err) die("Error from p4 print for %s: %s" % (f, err))
else:
die("Error from p4 print: %s" % err)
if 'depotFile' in marshalled and self.stream_have_file_info: if 'depotFile' in marshalled and self.stream_have_file_info:
# start of a new file - output the old one first # start of a new file - output the old one first