Can I use a scripted commit template for git?

Peter Tillemans picture Peter Tillemans · Aug 19, 2010 · Viewed 8.6k times · Source

We are working on tickets, and when we use the ticket number in the git commit message on the first line, then the ticket is updated with the commit message.

To make things simple we always work on a branch with the commit number.

Now I'd like to be presented with a commit message where the ticket number would already be filled in.

It must be possible, because the branch is already in the commit template, but in comments which are removed by git. I have scoured the docs and the 'net a couple of times, but I must be looking for the wrong words, because I cannot find it.

Can anyone help?

Answer

Walter Mundt picture Walter Mundt · Aug 19, 2010

You probably want to set up a prepare-commit-msg hook on your local repository. It might look like this (say the branches are named 'work-on-ticket-XXXX':

#!/bin/sh
ORIG_MSG_FILE="$1"
TEMP=`mktemp /tmp/git-XXXXX`

TICKETNO=`git branch | grep '^\*' | cut -b3-`

(echo "Work on ticket #$TICKETNO"; cat "$ORIG_MSG_FILE") > "$TEMP"
cat "$TEMP" > "$ORIG_MSG_FILE"

Put something like that (marked executable) in .git/hooks/prepare-commit-msg. You may have to adjust and elaborate on it of course.