From 16a46e6a2451b39310cc4352ab8fae603a07effd Mon Sep 17 00:00:00 2001 From: Andreas Fischer Date: Wed, 2 Mar 2011 00:04:45 +0100 Subject: [PATCH 1/6] [ticket/9824] Remove space after PHPBB3-12345 in prepared commit message. PHPBB3-9824 --- git-tools/hooks/prepare-commit-msg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-tools/hooks/prepare-commit-msg b/git-tools/hooks/prepare-commit-msg index 2bf25e58a4..2c6426ad6f 100755 --- a/git-tools/hooks/prepare-commit-msg +++ b/git-tools/hooks/prepare-commit-msg @@ -38,5 +38,5 @@ then tail="\n\nPHPBB3-${branch##ticket/}"; fi - echo "[$branch]$tail $(cat "$1")" > "$1" + echo "[$branch]$tail$(cat "$1")" > "$1" fi From 9bed2b119c9d3214b7869cecb416a231878aad66 Mon Sep 17 00:00:00 2001 From: Andreas Fischer Date: Wed, 2 Mar 2011 00:07:45 +0100 Subject: [PATCH 2/6] [ticket/9824] Add space after [ticket/12345] in prepared commit message. PHPBB3-9824 --- git-tools/hooks/prepare-commit-msg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-tools/hooks/prepare-commit-msg b/git-tools/hooks/prepare-commit-msg index 2c6426ad6f..c3e5dfa90c 100755 --- a/git-tools/hooks/prepare-commit-msg +++ b/git-tools/hooks/prepare-commit-msg @@ -38,5 +38,5 @@ then tail="\n\nPHPBB3-${branch##ticket/}"; fi - echo "[$branch]$tail$(cat "$1")" > "$1" + echo "[$branch] $tail$(cat "$1")" > "$1" fi From c489b189df39c75195f85ab26afe08cd44ad7f2e Mon Sep 17 00:00:00 2001 From: Oleg Pudeyev Date: Tue, 1 Mar 2011 20:17:59 -0500 Subject: [PATCH 3/6] [ticket/9824] Handle empty commit messages in commit-msg hook. Git already handles the case of commit message being empty by aborting the commit and displaying a reasonably helpful message. If there is no commit message, the hook will exit with success exit code to let git do its thing. PHPBB3-9824 --- git-tools/hooks/commit-msg | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/git-tools/hooks/commit-msg b/git-tools/hooks/commit-msg index a6777ff9c9..1d33995162 100755 --- a/git-tools/hooks/commit-msg +++ b/git-tools/hooks/commit-msg @@ -55,6 +55,17 @@ quit() fi } +# Check for empty commit message +if ! grep -qv '^#' "$1" +then + # Commit message is empty (or contains only comments). + # Let git handle this. + # It will abort with a message like so: + # + # Aborting commit due to empty commit message. + exit 0 +fi + msg=$(grep -nE '.{81,}' "$1"); if [ $? -eq 0 ] From b90e01392c1b88f5403d39e044cf80353923ca54 Mon Sep 17 00:00:00 2001 From: Oleg Pudeyev Date: Tue, 1 Mar 2011 20:20:29 -0500 Subject: [PATCH 4/6] [ticket/9824] Use printf instead of echo to render \n. On FreeBSD `echo "\n"` prints \n verbatim. Use printf instead. PHPBB3-9824 --- git-tools/hooks/prepare-commit-msg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-tools/hooks/prepare-commit-msg b/git-tools/hooks/prepare-commit-msg index c3e5dfa90c..11d2b6b2f2 100755 --- a/git-tools/hooks/prepare-commit-msg +++ b/git-tools/hooks/prepare-commit-msg @@ -35,7 +35,7 @@ then # Branch is prefixed with 'ticket/', append ticket ID to message if [ "$branch" != "${branch##ticket/}" ]; then - tail="\n\nPHPBB3-${branch##ticket/}"; + tail="$(printf "\n\nPHPBB3-${branch##ticket/}")"; fi echo "[$branch] $tail$(cat "$1")" > "$1" From d7a38fd7ef2bea57107968014cf63652372b45c1 Mon Sep 17 00:00:00 2001 From: Oleg Pudeyev Date: Tue, 1 Mar 2011 20:40:35 -0500 Subject: [PATCH 5/6] [ticket/9824] Allow empty lines after ticket reference. PHPBB3-9824 --- git-tools/hooks/commit-msg | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/git-tools/hooks/commit-msg b/git-tools/hooks/commit-msg index 1d33995162..319e27b811 100755 --- a/git-tools/hooks/commit-msg +++ b/git-tools/hooks/commit-msg @@ -139,6 +139,10 @@ do # Should not end up here false ;; + "possibly-eof") + # Allow empty and/or comment lines at the end + ! tail -n +"$i" "$1" |grep -qvE '^($|#)' + ;; "comment") echo "$line" | grep -Eq "^#"; ;; @@ -199,7 +203,7 @@ do in_description=1; ;; "footer") - expecting="footer eof"; + expecting="footer possibly-eof"; if [ "$tickets" = "" ] then tickets="$line"; @@ -210,6 +214,9 @@ do "comment") # Comments should expect the same thing again ;; + "possibly-eof") + expecting="eof"; + ;; *) echo "Unrecognised token $expect" >&2; quit 254; From e55228712831a2422cc1c171a6a1160c20d25f1e Mon Sep 17 00:00:00 2001 From: Oleg Pudeyev Date: Tue, 1 Mar 2011 20:56:57 -0500 Subject: [PATCH 6/6] [ticket/9824] Accept commit messages with less than perfect headings. Some commit messages exist only temporarily, because they are given on commits that are intended to be squashed. Accept such commit messages with a warning. PHPBB3-9824 --- git-tools/hooks/commit-msg | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/git-tools/hooks/commit-msg b/git-tools/hooks/commit-msg index 319e27b811..ad4d69a9da 100755 --- a/git-tools/hooks/commit-msg +++ b/git-tools/hooks/commit-msg @@ -118,7 +118,19 @@ do case $expect in "header") err=$ERR_HEADER; - echo "$line" | grep -Eq "^\[(ticket/[0-9]+|feature/$branch_regex|task/$branch_regex)\] [A-Z].+$" + echo "$line" | grep -Eq "^\[(ticket/[0-9]+|feature/$branch_regex|task/$branch_regex)\] .+$" + result=$? + if ! echo "$line" | grep -Eq "^\[(ticket/[0-9]+|feature/$branch_regex|task/$branch_regex)\] [A-Z].+$" + then + # Don't be too strict. + # Commits may be temporary, intended to be squashed later. + # Just issue a warning here. + echo "Warning: heading should be a sentence beginning with a capital letter." 1>&2 + echo "You entered:" 1>&2 + echo "$line" 1>&2 + fi + # restore exit code + (exit $result) ;; "empty") err=$ERR_EMPTY;