From 5025fa76134473910cd085a02f6ca20bfe716787 Mon Sep 17 00:00:00 2001 From: Marcin Lawrowski Date: Wed, 20 Apr 2016 12:22:22 +0100 Subject: [PATCH 1/4] Simple prepare-commit-msg hook --- check-diff.sh | 1 + pre-commit | 10 ++++++++++ prepare-commit-msg | 11 +++++++++++ readme.md | 7 +++++++ 4 files changed, 29 insertions(+) create mode 100755 prepare-commit-msg diff --git a/check-diff.sh b/check-diff.sh index f3e89f5..d5605f3 100755 --- a/check-diff.sh +++ b/check-diff.sh @@ -780,6 +780,7 @@ function lint_xml_files { cd "$LINTING_DIRECTORY" cat "$TEMP_DIRECTORY/paths-scope-xml" | remove_diff_range | xargs xmllint --noout ) + add_commit_message "Xmllint Check" "Passed" } function lint_php_files { diff --git a/pre-commit b/pre-commit index 7a89f85..1f5e77a 100755 --- a/pre-commit +++ b/pre-commit @@ -19,6 +19,14 @@ if [ ! -e "$DEV_LIB_PATH/check-diff.sh" ]; then exit 1 fi +DEV_LIB_COMMIT_MESSAGE_FILE=".dev-lib-commit-message.$PPID" +DEV_LIB_COMMIT_MESSAGE='' +function add_commit_message { + label=$1 + value=$2 + DEV_LIB_COMMIT_MESSAGE+="\n$label: $value" +} + source "$DEV_LIB_PATH/check-diff.sh" set_environment_variables --diff-base ${DIFF_BASE:-HEAD} --diff-head ${DIFF_HEAD:-STAGE} install_tools @@ -41,3 +49,5 @@ if [[ $SYNC_README_MD == 1 ]] && [ -e readme.txt ] && cat "$TEMP_DIRECTORY/paths git add $MARKDOWN_README_PATH fi fi + +echo -e "$DEV_LIB_COMMIT_MESSAGE" > $DEV_LIB_COMMIT_MESSAGE_FILE diff --git a/prepare-commit-msg b/prepare-commit-msg new file mode 100755 index 0000000..8556bf2 --- /dev/null +++ b/prepare-commit-msg @@ -0,0 +1,11 @@ +#!/bin/bash +# WordPress prepare-commit-msg hook + +DEV_LIB_COMMIT_MESSAGE_FILE=".dev-lib-commit-message.$PPID" + +if [ -f "$DEV_LIB_COMMIT_MESSAGE_FILE" ]; then + COMMIT_EDITMSG=$1 + cat "$DEV_LIB_COMMIT_MESSAGE_FILE" >> $COMMIT_EDITMSG + unlink "$DEV_LIB_COMMIT_MESSAGE_FILE" +fi + diff --git a/readme.md b/readme.md index 436a950..9f0daac 100644 --- a/readme.md +++ b/readme.md @@ -27,6 +27,12 @@ To install the pre-commit hook, symlink to [`pre-commit`](pre-commit) from your cd .git/hooks && ln -s ../../dev-lib/pre-commit . && cd - ``` +To install the prepare-commit-msg hook, symlink to [`prepare-commit-msg`](prepare-commit-msg) from your project's `.git/hooks/prepare-commit-msg`: + +```bash +cd .git/hooks && ln -s ../../dev-lib/prepare-commit-msg . && cd - +``` + Also symlink (or copy) the [`.jshintrc`](.jshint), [`.jshintignore`](.jshintignore), [`.jscsrc`](.jscsrc), [`phpcs.ruleset.xml`](phpcs.ruleset.xml), and [`phpunit-plugin.xml`](phpunit-plugin.xml) (note the PHPUnit config will need its paths modified if it is copied instead of symlinked): ```bash @@ -48,6 +54,7 @@ Often installing as a submodule is not viable, for example when contributing to git clone https://github.com/xwp/wp-dev-lib.git ~/Projects/wp-dev-lib cd my-plugin/.git/hooks ln -s ~/Projects/wp-dev-lib/pre-commit +ln -s ~/Projects/wp-dev-lib/prepare-commit-msg ``` For the Travis CI checks, the `.travis.yml` copied and committed to the repo (see below) will clone the repo into the `dev-lib` directory if it doesn't exist (or whatever your `DEV_LIB_PATH` environment variable is set to). From 39a2e6e429f9e30cd890d11722393b4da8406559 Mon Sep 17 00:00:00 2001 From: Marcin Lawrowski Date: Fri, 22 Apr 2016 17:32:39 +0100 Subject: [PATCH 2/4] Parse Jira tasks --- prepare-commit-msg | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/prepare-commit-msg b/prepare-commit-msg index 8556bf2..f565ac5 100755 --- a/prepare-commit-msg +++ b/prepare-commit-msg @@ -2,9 +2,19 @@ # WordPress prepare-commit-msg hook DEV_LIB_COMMIT_MESSAGE_FILE=".dev-lib-commit-message.$PPID" +COMMIT_EDITMSG=$1 + +JIRA_TASK_REGEXP='.*([A-Z]{1,32}-[0-9]{1,32}).*' +JIRA_BRANCH_REGEXP='([a-zA-Z]+-[0-9]{1,32})'; +if [[ ! $(cat "$COMMIT_EDITMSG") =~ $JIRA_TASK_REGEXP ]]; then + JIRA_TASK=$(git rev-parse --abbrev-ref HEAD | grep -oP "$JIRA_BRANCH_REGEXP") + if [ -n "$JIRA_TASK" ]; then + MESSAGE=`cat $COMMIT_EDITMSG` + echo "${JIRA_TASK^^}: $MESSAGE" > $COMMIT_EDITMSG + fi +fi if [ -f "$DEV_LIB_COMMIT_MESSAGE_FILE" ]; then - COMMIT_EDITMSG=$1 cat "$DEV_LIB_COMMIT_MESSAGE_FILE" >> $COMMIT_EDITMSG unlink "$DEV_LIB_COMMIT_MESSAGE_FILE" fi From 08597647682c9ea482d455d22f71ada1edcdd1f7 Mon Sep 17 00:00:00 2001 From: Marcin Lawrowski Date: Fri, 22 Apr 2016 17:37:03 +0100 Subject: [PATCH 3/4] Change temp file path --- pre-commit | 2 +- prepare-commit-msg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pre-commit b/pre-commit index 1f5e77a..d6f8147 100755 --- a/pre-commit +++ b/pre-commit @@ -19,7 +19,7 @@ if [ ! -e "$DEV_LIB_PATH/check-diff.sh" ]; then exit 1 fi -DEV_LIB_COMMIT_MESSAGE_FILE=".dev-lib-commit-message.$PPID" +DEV_LIB_COMMIT_MESSAGE_FILE="/tmp/.dev-lib-commit-message.$PPID" DEV_LIB_COMMIT_MESSAGE='' function add_commit_message { label=$1 diff --git a/prepare-commit-msg b/prepare-commit-msg index f565ac5..b30fb49 100755 --- a/prepare-commit-msg +++ b/prepare-commit-msg @@ -1,7 +1,7 @@ #!/bin/bash # WordPress prepare-commit-msg hook -DEV_LIB_COMMIT_MESSAGE_FILE=".dev-lib-commit-message.$PPID" +DEV_LIB_COMMIT_MESSAGE_FILE="/tmp/.dev-lib-commit-message.$PPID" COMMIT_EDITMSG=$1 JIRA_TASK_REGEXP='.*([A-Z]{1,32}-[0-9]{1,32}).*' From a3c594cd683b3c82313c19a83c78482b306c961c Mon Sep 17 00:00:00 2001 From: Marcin Lawrowski Date: Sat, 23 Apr 2016 12:20:41 +0100 Subject: [PATCH 4/4] Revert not related changes --- check-diff.sh | 1 - pre-commit | 10 ---------- prepare-commit-msg | 7 ------- 3 files changed, 18 deletions(-) diff --git a/check-diff.sh b/check-diff.sh index d5605f3..f3e89f5 100755 --- a/check-diff.sh +++ b/check-diff.sh @@ -780,7 +780,6 @@ function lint_xml_files { cd "$LINTING_DIRECTORY" cat "$TEMP_DIRECTORY/paths-scope-xml" | remove_diff_range | xargs xmllint --noout ) - add_commit_message "Xmllint Check" "Passed" } function lint_php_files { diff --git a/pre-commit b/pre-commit index d6f8147..7a89f85 100755 --- a/pre-commit +++ b/pre-commit @@ -19,14 +19,6 @@ if [ ! -e "$DEV_LIB_PATH/check-diff.sh" ]; then exit 1 fi -DEV_LIB_COMMIT_MESSAGE_FILE="/tmp/.dev-lib-commit-message.$PPID" -DEV_LIB_COMMIT_MESSAGE='' -function add_commit_message { - label=$1 - value=$2 - DEV_LIB_COMMIT_MESSAGE+="\n$label: $value" -} - source "$DEV_LIB_PATH/check-diff.sh" set_environment_variables --diff-base ${DIFF_BASE:-HEAD} --diff-head ${DIFF_HEAD:-STAGE} install_tools @@ -49,5 +41,3 @@ if [[ $SYNC_README_MD == 1 ]] && [ -e readme.txt ] && cat "$TEMP_DIRECTORY/paths git add $MARKDOWN_README_PATH fi fi - -echo -e "$DEV_LIB_COMMIT_MESSAGE" > $DEV_LIB_COMMIT_MESSAGE_FILE diff --git a/prepare-commit-msg b/prepare-commit-msg index b30fb49..44d4f2e 100755 --- a/prepare-commit-msg +++ b/prepare-commit-msg @@ -1,7 +1,6 @@ #!/bin/bash # WordPress prepare-commit-msg hook -DEV_LIB_COMMIT_MESSAGE_FILE="/tmp/.dev-lib-commit-message.$PPID" COMMIT_EDITMSG=$1 JIRA_TASK_REGEXP='.*([A-Z]{1,32}-[0-9]{1,32}).*' @@ -13,9 +12,3 @@ if [[ ! $(cat "$COMMIT_EDITMSG") =~ $JIRA_TASK_REGEXP ]]; then echo "${JIRA_TASK^^}: $MESSAGE" > $COMMIT_EDITMSG fi fi - -if [ -f "$DEV_LIB_COMMIT_MESSAGE_FILE" ]; then - cat "$DEV_LIB_COMMIT_MESSAGE_FILE" >> $COMMIT_EDITMSG - unlink "$DEV_LIB_COMMIT_MESSAGE_FILE" -fi -