From d16520499d2652b5b59dfb25f9cf2d56a4c6913a Mon Sep 17 00:00:00 2001 From: Pete Wyckoff Date: Sat, 17 Dec 2011 12:39:03 -0500 Subject: git-p4: fix skipSubmitEdit regression 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 Signed-off-by: Pete Wyckoff Signed-off-by: Junio C Hamano diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4 index 7d8e74b..5949803 100755 --- a/contrib/fast-import/git-p4 +++ b/contrib/fast-import/git-p4 @@ -872,13 +872,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)) @@ -1062,6 +1065,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 -- cgit v0.10.2-6-g49f6