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 <michael.horowitz@ieee.org>
Signed-off-by: Pete Wyckoff <pw@padd.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Pete Wyckoff 2011-12-17 12:39:03 -05:00 committed by Junio C Hamano
parent ee22802493
commit d16520499d
2 changed files with 34 additions and 8 deletions

View File

@ -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:

View File

@ -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