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@xxxxxxxx> Signed-off-by: Pete Wyckoff <pw@xxxxxxxx> --- michael.horowitz@xxxxxxxx wrote on Fri, 16 Dec 2011 19:49 -0500: > 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. [..] > >> 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 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html