Can I use a scripted commit template for git?

非 Y 不嫁゛ 提交于 2019-12-20 08:59:29

问题


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?


回答1:


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.




回答2:


Looks like you should be able to do this by using the .git/hooks/pre-commit-msg

An simple example of this would be:

#!/bin/sh
# $1 contains the file with the commit msg we're about to edit.
# We'll just completely clobber it for this example.
echo "Hello" > "$1"

This would make your commit begin with "Hello". Obviously, since it's a script you can work some magic here to fill out your ticket number and any other information. There should be a pre-commit-msg.sample in the .git/hooks/ directory telling you which args the script receives if you need anything else.



来源:https://stackoverflow.com/questions/3525341/can-i-use-a-scripted-commit-template-for-git

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!