Last active
June 3, 2021 10:45
-
-
Save ehuynh/f184258a9b6943369aabb7437363e5a9 to your computer and use it in GitHub Desktop.
prepare-commit-msg hook for populating commit message template with the JIRA ticket number as a prefix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
COMMIT_MSG_FILE=$1 | |
COMMIT_SOURCE=$2 | |
SHA1=$3 | |
#/usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" | |
# Include any branches for which you wish to disable this script | |
if [ -z "$BRANCHES_TO_SKIP" ]; then | |
BRANCHES_TO_SKIP=(master develop) | |
fi | |
# Get the current branch name | |
BRANCH_NAME=$(git symbolic-ref --short HEAD) | |
# Ticket name is retrieved as a string between the first slash and the second hyphen | |
TICKET_NAME=$(echo $BRANCH_NAME | sed -e 's/.*\([A-Z]\{3\}-[0-9]\{3\}\).*/\1/') | |
BRANCH_EXCLUDED=$(printf "%s\n" "${BRANCHES_TO_SKIP[@]}" | grep -c "^$BRANCH_NAME$") | |
ALREADY_IN_MSG=$(grep -c "\[$TICKET_NAME\]" $COMMIT_MSG_FILE) | |
# If it isn't excluded or already in commit message, prepend the ticket name to the given message | |
if ! [ "$TICKET_NAME" == "$BRANCH_NAME" ] && [ -n "$BRANCH_NAME" ] && ! [[ "$BRANCH_EXCLUDED" -eq 1 ]] && ! [[ "$ALREADY_IN_MSG" -eq 1 ]]; then | |
sed -i.bak -e "1s/^/[$TICKET_NAME] /" "$COMMIT_MSG_FILE" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment