threads / patch / 15214

patch[git-p4] Make it possible to abort the submission of a change to Perforce

Subject: [PATCH] [git-p4] Make it possible to abort the submission of a change to Perforce

## tl;dr

2 messages between Aug 27, 2008 and Aug 27, 2008. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Simon Hausmann· Aug 27, 2008, 07:30 UTC · lore

Currently it is not possible to skip the submission of a change to Perforce when running git-p4 submit. This patch compares the modification time before and after the submit editor invokation and offers a prompt for skipping if the submit template file was not saved.

Signed-off-by: Simon Hausmann <simon@lst.de>
---
 contrib/fast-import/git-p4 |   31 +++++++++++++++++++++++--------
 1 files changed, 23 insertions(+), 8 deletions(-)
Show changes to contrib/fast-import/git-p4 +23 −8
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index 46136d4..c1d24b3 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -708,6 +708,7 @@ class P4Submit(Command):
                 newdiff = newdiff.replace("\n", "\r\n")
             tmpFile.write(submitTemplate + separatorLine + diff + newdiff)
             tmpFile.close()
+            mtime = os.stat(fileName).st_mtime
             defaultEditor = "vi"
             if platform.system() == "Windows":
                 defaultEditor = "notepad"
@@ -716,15 +717,29 @@ class P4Submit(Command):
             else:
                 editor = os.environ.get("EDITOR", defaultEditor);
             system(editor + " " + fileName)
-            tmpFile = open(fileName, "rb")
-            message = tmpFile.read()
-            tmpFile.close()
-            os.remove(fileName)
-            submitTemplate = message[:message.index(separatorLine)]
-            if self.isWindows:
-                submitTemplate = submitTemplate.replace("\r\n", "\n")
 
-            p4_write_pipe("submit -i", submitTemplate)
+            response = "y"
+            if os.stat(fileName).st_mtime <= mtime:
+                response = "x"
+                while response != "y" and response != "n":
+                    response = raw_input("Submit template unchanged. Submit anyway? [y]es, [n]o (skip this patch) ")
+
+            if response == "y":
+                tmpFile = open(fileName, "rb")
+                message = tmpFile.read()
+                tmpFile.close()
+                submitTemplate = message[:message.index(separatorLine)]
+                if self.isWindows:
+                    submitTemplate = submitTemplate.replace("\r\n", "\n")
+                p4_write_pipe("submit -i", submitTemplate)
+            else:
+                for f in editedFiles:
+                    p4_system("revert \"%s\"" % f);
+                for f in filesToAdd:
+                    p4_system("revert \"%s\"" % f);
+                    system("rm %s" %f)
+
+            os.remove(fileName)
         else:
             fileName = "submit.txt"
             file = open(fileName, "w+")
-- 
1.6.0.2.g2ebc0
Junio C Hamano· Aug 27, 2008, 19:20 UTC · re: Simon Hausmann · lore

Re: [PATCH] [git-p4] Make it possible to abort the submission of a change to Perforce

Simon Hausmann <simon@lst.de> writes:
> Currently it is not possible to skip the submission of a change to Perforce
> when running git-p4 submit. This patch compares the modification time before
> and after the submit editor invokation and offers a prompt for skipping if
> the submit template file was not saved.
Applied, thanks.

It makes one wonder if mtime is a reliable enough indication or you are better off comparing the contents, though. The message file the user is editing is not that big anyway, no?

← back to recent threads