我可以为git使用脚本化的提交模板吗?

时间:2010-08-19 19:11:39

标签: git git-commit pre-commit-hook

我们正在处理故障单,当我们在第一行的git commit消息中使用故障单编号时,将使用提交消息更新故障单。

为简单起见,我们总是使用提交号在分支上工作。

现在,我希望收到一条提交消息,其中已经填写了票号。

必须是可能的,因为分支已经在提交模板中,但是在由git删除的注释中。我曾经几次搜索过文档和网页,但我一定在找错字,因为我找不到它。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:38)

您可能希望在本地存储库中设置prepare-commit-msg挂钩。它可能看起来像这样(比如分支被命名为'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"

.git/hooks/prepare-commit-msg中添加类似的内容(标记为可执行文件)。你当然可能需要调整和详细说明。

答案 1 :(得分:5)

看起来你应该可以通过使用.git / hooks / pre-commit-msg

来做到这一点

一个简单的例子是:

#!/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"

这会使您的提交以“Hello”开头。显然,因为它是一个脚本,你可以在这里工作,填写你的票号和任何其他信息。 在.git / hooks /目录中应该有一个pre-commit-msg.sample,告诉你如果你还需要其他东西,脚本会收到哪些args。