{"thread":{"id":"15760","subject":"[PATCH] rebase -i: proper prepare-commit-msg hook argument when squashing","startedAt":"2008-10-03T00:08:21Z","lastAt":"2008-10-03T09:33:20Z","messageCount":3,"participants":["SZEDER Gábor","Jeff King"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"92206","messageId":"1222992501-943-1-git-send-email-szeder@ira.uka.de","threadId":"15760","inReplyTo":null,"subject":"[PATCH] rebase -i: proper prepare-commit-msg hook argument when squashing","fromName":"SZEDER Gábor","fromEmail":"szeder@ira.uka.de","sentAt":"2008-10-03T00:08:21Z","receivedAt":"2008-10-03T00:08:21Z","isPatch":true,"sender":{"key":"szeder.dev@gmail.com","avatar":"https://avatars.githubusercontent.com/u/116324?v=4"},"body":"One would expect that the prepare-commit-msg hook gets 'squash' as the\nsecond argument when squashing commits with 'rebase -i'.  However,\nthat was not the case, as it got 'merge' instead.  This patch fixes\nthe problem.\n\nSigned-off-by: SZEDER Gábor <szeder@ira.uka.de>\n---\n git-rebase--interactive.sh |   17 +++++++++++------\n 1 files changed, 11 insertions(+), 6 deletions(-)\n\ndiff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh\nindex edb6ec6..ec4299a 100755\n--- a/git-rebase--interactive.sh\n+++ b/git-rebase--interactive.sh\n@@ -304,23 +304,28 @@ do_next () {\n \n \t\tmark_action_done\n \t\tmake_squash_message $sha1 > \"$MSG\"\n+\t\tfailed=f\n+\t\tauthor_script=$(get_author_ident_from_commit HEAD)\n+\t\toutput git reset --soft HEAD^\n+\t\tpick_one -n $sha1 || failed=t\n \t\tcase \"$(peek_next_command)\" in\n \t\tsquash|s)\n \t\t\tEDIT_COMMIT=\n \t\t\tUSE_OUTPUT=output\n+\t\t\tMSG_OPT=-F\n+\t\t\tMSG_FILE=\"$MSG\"\n \t\t\tcp \"$MSG\" \"$SQUASH_MSG\"\n \t\t\t;;\n \t\t*)\n \t\t\tEDIT_COMMIT=-e\n \t\t\tUSE_OUTPUT=\n+\t\t\tMSG_OPT=\n+\t\t\tMSG_FILE=\n \t\t\trm -f \"$SQUASH_MSG\" || exit\n+\t\t\tcp -v \"$MSG\" \"$GIT_DIR\"/SQUASH_MSG\n+\t\t\trm -f \"$GIT_DIR\"/MERGE_MSG || exit\n \t\t\t;;\n \t\tesac\n-\n-\t\tfailed=f\n-\t\tauthor_script=$(get_author_ident_from_commit HEAD)\n-\t\toutput git reset --soft HEAD^\n-\t\tpick_one -n $sha1 || failed=t\n \t\techo \"$author_script\" > \"$DOTEST\"/author-script\n \t\tif test $failed = f\n \t\tthen\n@@ -329,7 +334,7 @@ do_next () {\n \t\t\tGIT_AUTHOR_NAME=\"$GIT_AUTHOR_NAME\" \\\n \t\t\tGIT_AUTHOR_EMAIL=\"$GIT_AUTHOR_EMAIL\" \\\n \t\t\tGIT_AUTHOR_DATE=\"$GIT_AUTHOR_DATE\" \\\n-\t\t\t$USE_OUTPUT git commit --no-verify -F \"$MSG\" $EDIT_COMMIT || failed=t\n+\t\t\t$USE_OUTPUT git commit --no-verify $MSG_OPT \"$MSG_FILE\" $EDIT_COMMIT || failed=t\n \t\tfi\n \t\tif test $failed = t\n \t\tthen\n-- \n1.6.0.2.430.gfc53\n"},{"id":"92221","messageId":"20081003060110.GA4473@coredump.intra.peff.net","threadId":"15760","inReplyTo":"1222992501-943-1-git-send-email-szeder@ira.uka.de","subject":"Re: [PATCH] rebase -i: proper prepare-commit-msg hook argument when squashing","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2008-10-03T06:01:10Z","receivedAt":"2008-10-03T06:01:10Z","isPatch":true,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Fri, Oct 03, 2008 at 02:08:21AM +0200, SZEDER Gábor wrote:\n\n> +\t\t\tcp -v \"$MSG\" \"$GIT_DIR\"/SQUASH_MSG\n\nSorry, but \"cp -v\" is not portable. It's not in POSIX, and this breaks\nthe script for (at least) Solaris.\n\nHowever, it's not even clear to me why \"-v\" is used at all, considering\nthat the \"squash\" case above does not use it. Is it a debugging\nleftover? Am I missing something?\n\n[Aside: My Solaris 8 autobuilder is now running, which was a huge pain.\nHowever, it is very satisfying to catch things like this in \"next\"\nbefore they hit a wider audience.]\n\n-Peff\n"},{"id":"92230","messageId":"20081003093320.GF6839@neumann","threadId":"15760","inReplyTo":"20081003060110.GA4473@coredump.intra.peff.net","subject":"rebase -i: remove leftover debugging","fromName":"SZEDER Gábor","fromEmail":"szeder@ira.uka.de","sentAt":"2008-10-03T09:33:20Z","receivedAt":"2008-10-03T09:33:20Z","isPatch":false,"sender":{"key":"szeder.dev@gmail.com","avatar":"https://avatars.githubusercontent.com/u/116324?v=4"},"body":"Signed-off-by: SZEDER Gábor <szeder@ira.uka.de>\n---\nOn Fri, Oct 03, 2008 at 02:01:10AM -0400, Jeff King wrote:\n> Sorry, but \"cp -v\" is not portable. It's not in POSIX, and this breaks\n> the script for (at least) Solaris.\n> \n> However, it's not even clear to me why \"-v\" is used at all, considering\n> that the \"squash\" case above does not use it. Is it a debugging\n> leftover? Am I missing something?\nOh, yeah, it's just leftover debugging.  Thanks for catching.\n\n\n git-rebase--interactive.sh |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh\nindex 77e1132..ec4299a 100755\n--- a/git-rebase--interactive.sh\n+++ b/git-rebase--interactive.sh\n@@ -322,7 +322,7 @@ do_next () {\n \t\t\tMSG_OPT=\n \t\t\tMSG_FILE=\n \t\t\trm -f \"$SQUASH_MSG\" || exit\n-\t\t\tcp -v \"$MSG\" \"$GIT_DIR\"/SQUASH_MSG\n+\t\t\tcp \"$MSG\" \"$GIT_DIR\"/SQUASH_MSG\n \t\t\trm -f \"$GIT_DIR\"/MERGE_MSG || exit\n \t\t\t;;\n \t\tesac\n-- \n1.6.0.2.430.gfc53\n"}]}