Skip to content

Instantly share code, notes, and snippets.

@woneill
Created May 6, 2020 15:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save woneill/4cc8efa5adf3f3869ebbf5ad8cd47fd8 to your computer and use it in GitHub Desktop.
Save woneill/4cc8efa5adf3f3869ebbf5ad8cd47fd8 to your computer and use it in GitHub Desktop.
Prepend JIRA issue name to commits
To set up:
Create the directory ~/.git-templates/hooks and save the above content in a file named prepare-commit-msg in that directory
Run chmod a+x ~/.git-templates/hooks/prepare-commit-msg
Run git config --global init.templatedir '~/.git-templates'
In any repos you already have on your machine, run git init to apply the changes. Newly cloned repos won't need this step.
Once this has been set up, running a command like git commit -m "This is a test message" on a branch such as ABC-123 will produce a final commit message of [ABC-123] This is a test message automatically.
#!/bin/bash
# Include any branches for which you wish to disable this script
if [ -z "$BRANCHES_TO_SKIP" ]; then
BRANCHES_TO_SKIP=(master develop staging test)
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 \
'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/')
# 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