Skip to content

Instantly share code, notes, and snippets.

@swissonid
Last active October 15, 2019 06:47
Show Gist options
  • Save swissonid/3776500bf4235a89e1f986c73b02dca7 to your computer and use it in GitHub Desktop.
Save swissonid/3776500bf4235a89e1f986c73b02dca7 to your computer and use it in GitHub Desktop.
prepare-commit-msg
#!/bin/bash
# This hook is based on https://medium.com/@nicklee1/prepending-your-git-commit-messages-with-user-story-ids-3bfea00eab5a
## HOW TO INSTALL
# GLOBAL FOR ALL FUTURE PROJECT
# git config --global init.templatedir '~/.git-templates'
# mkdir -p ~/.git-templates/hooks
# touch ~/.git-templates/hooks/prepare-commit-msg
# Copy this text (the whole file) into the created file (prepare-commit-msg)
# chmod a+x ~/.git-templates/hooks/prepare-commit-msg
# ADD HOOK TO AN EXSTING REPO
# git init
# OR
# Go to your root folder of your project
# mkdir -p .git/hooks/
# cp ~/.git-templates/hooks/prepare-commit-msg ./.git/hooks/.
# 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 and check if it is excluded
BRANCH_NAME=$(git symbolic-ref --short HEAD)
BRANCH_EXCLUDED=$(printf "%s\n" "${BRANCHES_TO_SKIP[@]}" | grep -c "^$BRANCH_NAME$")
# Trim it down to get the parts we're interested in
TRIMMED=$(echo $BRANCH_NAME | sed \
-e 's:^\([^-]*-[^-]*\)-.*:\1:' \
-e 's/^.*\///' \
-e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
-e 's/$/ |/')
# If it isn't excluded, preprend the trimmed branch identifier to the given message
if [ -n "$BRANCH_NAME" ] && ! [[ $BRANCH_EXCLUDED -eq 1 ]]; then
sed -i.bak -e "1s/^/$TRIMMED /" $1
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment