git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] git-p4: fix skipSubmitEdit regression

From
PWPete Wyckoff <pw@padd.com>
Date
Dec 17, 2011, 17:39 UTC
Message-ID
<20111217173903.GA13674@padd.com>
In-Reply-To
<CAFLRboqJAC0h27m=B9Tw5SFcupEgn4fe9YvWksgqxOVs20nFHw@mail.gmail.com>

Commit 7c766e5 (git-p4: introduce skipSubmitEdit, 2011-12-04) made it easier to automate submission to p4, but broke the most common case.

Add a test for when the user really does edit and save the change template, and fix the bug that causes the test to fail.

Also add a confirmation message when submission is cancelled.
Reported-by: Michael Horowitz <michael.horowitz@ieee.org>
Signed-off-by: Pete Wyckoff <pw@padd.com>
---
michael.horowitz@ieee.org wrote on Fri, 16 Dec 2011 19:49 -0500:
Show 5 quoted lines
> Oh, and in the case where you do edit the template, it doesn't give
> you an error or anything, it looks like it succeeded, but you'll
> notice the change never got submitted to Perforce.  If you look
> carefully though, you can see it reverting each of your edited files
> in the P4 tree.
[..]
Show 7 quoted lines
> >> On 16/12/11 15:38, Michael Horowitz wrote:
> >>>
> >>> It appears that this change has introduced a bug that causes submit to
> >>> fail every time if you do not skip the submit edit.
> >>>
> >>> From what I can tell, this is because the new edit_template method
> >>> does not return True at the end.

Oops. In adding this code, I failed to test what should be the normal code path. How sad.

Junio:  this bug is in master.  Could you apply this fix?
		-- Pete
 contrib/fast-import/git-p4  |   18 +++++++++++-------
 t/t9805-skip-submit-edit.sh |   24 +++++++++++++++++++++++-
 2 files changed, 34 insertions(+), 8 deletions(-)
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index 3571362..d501eac 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -878,13 +878,16 @@ class P4Submit(Command, P4UserMap):
         if gitConfig("git-p4.skipSubmitEditCheck") == "true":
             return True
 
-        if os.stat(template_file).st_mtime <= mtime:
-            while True:
-                response = raw_input("Submit template unchanged. Submit anyway? [y]es, [n]o (skip this patch) ")
-                if response == 'y':
-                    return True
-                if response == 'n':
-                    return False
+        # modification time updated means user saved the file
+        if os.stat(template_file).st_mtime > mtime:
+            return True
+
+        while True:
+            response = raw_input("Submit template unchanged. Submit anyway? [y]es, [n]o (skip this patch) ")
+            if response == 'y':
+                return True
+            if response == 'n':
+                return False
 
     def applyCommit(self, id):
         print "Applying %s" % (read_pipe("git log --max-count=1 --pretty=oneline %s" % id))
@@ -1068,6 +1071,7 @@ class P4Submit(Command, P4UserMap):
                         self.modifyChangelistUser(changelist, p4User)
             else:
                 # skip this patch
+                print "Submission cancelled, undoing p4 changes."
                 for f in editedFiles:
                     p4_revert(f)
                 for f in filesToAdd:
diff --git a/t/t9805-skip-submit-edit.sh b/t/t9805-skip-submit-edit.sh
index 734ccf2..df929e0 100755
--- a/t/t9805-skip-submit-edit.sh
+++ b/t/t9805-skip-submit-edit.sh
@@ -38,7 +38,7 @@ test_expect_success 'no config, unedited, say no' '
 		cd "$git" &&
 		echo line >>file1 &&
 		git commit -a -m "change 3 (not really)" &&
-		printf "bad response\nn\n" | "$GITP4" submit
+		printf "bad response\nn\n" | "$GITP4" submit &&
 		p4 changes //depot/... >wc &&
 		test_line_count = 2 wc
 	)
@@ -74,6 +74,28 @@ test_expect_success 'skipSubmitEditCheck' '
 	)
 '
 
+# check the normal case, where the template really is edited
+test_expect_success 'no config, edited' '
+	"$GITP4" clone --dest="$git" //depot &&
+	test_when_finished cleanup_git &&
+	ed="$TRASH_DIRECTORY/ed.sh" &&
+	test_when_finished "rm \"$ed\"" &&
+	cat >"$ed" <<-EOF &&
+		#!$SHELL_PATH
+		sleep 1
+		touch "\$1"
+		exit 0
+	EOF
+	chmod 755 "$ed" &&
+	(
+		cd "$git" &&
+		echo line >>file1 &&
+		git commit -a -m "change 5" &&
+		EDITOR="\"$ed\"" "$GITP4" submit &&
+		p4 changes //depot/... >wc &&
+		test_line_count = 5 wc
+	)
+'
 
 test_expect_success 'kill p4d' '
 	kill_p4d
-- 
1.7.8.154.g767b7.dirty
Previous: Michael Horowitz
Message 17 of 17 in “git-p4.skipSubmitEdit”
  1. L. A. Linden LevySep 8, 2011
  2. Vitor AntunesSep 9, 2011
  3. Luke DiamandSep 9, 2011
  4. L. A. Linden LevySep 9, 2011
  5. Luke DiamandSep 10, 2011
  6. Luke DiamandSep 12, 2011
  7. L. A. Linden LevySep 12, 2011
  8. Pete WyckoffOct 18, 2011
  9. L. A. Linden LevyOct 18, 2011
  10. Pete WyckoffOct 18, 2011
  11. Luke DiamandOct 18, 2011
  12. Pete WyckoffOct 20, 2011
  13. Michael HorowitzDec 16, 2011
  14. Luke DiamandDec 16, 2011
  15. Michael HorowitzDec 17, 2011
  16. Michael HorowitzDec 17, 2011
  17. git-p4: fix skipSubmitEdit regressionPete Wyckoff, Dec 17, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.