Skip to content

Instantly share code, notes, and snippets.

@funmia
Created October 1, 2018 21:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save funmia/a92a30888d0bb7ee41d6c9b67633ca4f to your computer and use it in GitHub Desktop.
Save funmia/a92a30888d0bb7ee41d6c9b67633ca4f to your computer and use it in GitHub Desktop.
prepend git commit with ticket id

Source:

https://medium.com/@nicklee1/prepending-your-git-commit-messages-with-user-story-ids-3bfea00eab5a

Open up the .git/hooks directory of the project in a text editor. Look for the file called prepare-commit-msg.sample and replace it's content with this script:

#!/bin/bash
# Include any branches for which you wish to disable this script
if [ -z "$BRANCHES_TO_SKIP" ]; then
  BRANCHES_TO_SKIP=(development)
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

Then rename the file to prepare-commit-msg (i.e. remove the .sample).

Now run git init (make sure you're inside the root directory) to pick up the changes and try making a commit. You should see the ticket ID from your branch automatically prepended to your commit message.

If you use a git client like Sourcetree the changes will also take effect.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment