useful Git hooks for my dev environment
TODO: Update to use GNU versions of tools such as sed so that it works on other environments
| #!/bin/sh | |
| commit_regex='(([[:upper:]]*\-[0-9]*)|fixup!)' | |
| error_msg="Aborting commit. Your commit message is missing a JIRA ticket" | |
| if ! grep -iqE "$commit_regex" "$1"; | |
| then | |
| echo "$error_msg" >&2 | |
| exit 1 | |
| fi | |
| current_branch="$(git rev-parse --abbrev-ref HEAD)" | |
| current_branch_ticket="$(echo $current_branch | grep -oh "[[:upper:]]*-[0-9]*" | head -n 1)" | |
| commit_matches_branch_regex="($current_branch_ticket|fixup\!)" | |
| if ! grep -iqE "$commit_matches_branch_regex" "$1"; | |
| then | |
| echo "your JIRA ticket number doesn't match the branch name" >&2 | |
| exit 1 | |
| fi |
| #!/bin/bash | |
| # Stops accidental commits to master and develop. https://gist.github.com/stefansundin/9059706 | |
| BRANCH=`git rev-parse --abbrev-ref HEAD` | |
| if [[ "$BRANCH" == "master" || "$BRANCH" == "develop" ]]; then | |
| echo "You are on branch $BRANCH. Are you sure you want to commit to this branch?" | |
| echo "If so, commit with -n to bypass this pre-commit hook." | |
| exit 1 | |
| fi | |
| exit 0 |
| #!/bin/sh | |
| # | |
| # The "pre-rebase" hook is run just before "git rebase" starts doing | |
| # its job, and can prevent the command from running by exiting with | |
| # non-zero status. | |
| # | |
| # The hook is called with the following parameters: | |
| # | |
| # $1 -- the upstream the series was forked from. | |
| # $2 -- the branch being rebased (or empty when rebasing the current branch). | |
| # | |
| # fix the brain dead behaviour of visual studio when reloading modified projects | |
| find -type f -name "*.sln" -exec touch {} + |
| #!/bin/bash | |
| # Adds JIRA Ticket number to commit messages | |
| # Based on http://waiting-for-dev.github.io/blog/2014/07/19/append-issue-number-to-commit-message-automatically-with-git-hooks/ | |
| if ! [ -z ${2+x} ]; then | |
| COMMIT_PREFIX=$(git rev-parse --abbrev-ref HEAD | grep -o '[[:upper:]]*\-[0-9]*' | head -1) | |
| sed -i '' "1s/^/[$COMMIT_PREFIX] /" "$1" | |
| fi |