Skip to content

Instantly share code, notes, and snippets.

@robatron
Last active April 13, 2023 17:26
Show Gist options
  • Select an option

  • Save robatron/01b9a1061e1e8b35d270 to your computer and use it in GitHub Desktop.

Select an option

Save robatron/01b9a1061e1e8b35d270 to your computer and use it in GitHub Desktop.

Automatically Prepend a Jira Issue ID to Git Commit Messages

Use a git hook to match a Jira issue ID from the current branch, and prepend it to every commit message

Assuming the current branch contains a Jira issue ID, you can use the a git hook script to prepend it to every commit message.

  1. Create a commit-msg git hook script, and make it executable. (From your project's root directory, you can run install -b -m 755 /dev/null .git/hooks/commit-msg)

  2. Save the following script to the newly-created .git/hooks/commit-msg

#!/bin/sh

COMMIT_FILE=$1
COMMIT_MSG=$(cat $1)
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
JIRA_ID=$(echo "$CURRENT_BRANCH" | grep -Eo "[A-Z0-9]{1,10}-?[A-Z0-9]+-\d+")

if [ ! -z "$JIRA_ID" ]; then
    echo "$JIRA_ID $COMMIT_MSG" > $COMMIT_FILE
    echo "JIRA ID '$JIRA_ID', matched in current branch name, prepended to commit message. (Use --no-verify to skip)"
fi

References

@zack-snyder
Copy link
Copy Markdown

How can I append the issue number in the next line?
switching to :echo "$COMMIT_MSG $JIRA_ID" > $COMMIT_FILE
doesn't work.

@TheLoneUs
Copy link
Copy Markdown

@zack-snyder
I know this is old, but:
Have you tried echo -e "$COMMIT_MSG\n$JIRA_ID" > $COMMIT_FILE
-e flag enables interpretation of backslashes and the \n is a newline. No guarantees it will work on all systems, but it should give you an idea of what you need to try.

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