我需要制作一个commit-msg钩子,以检查提交消息是否包含“app.asana”的任何部分。我查阅了一些参考资料和文档,知道我需要使用commit-msg来完成这个任务。我必须使用Perl或Bash来完成这个任务。
有没有人对此有线索或可以提供更多例子来学习如何完成它?
谢谢。
有没有人对此有线索或可以提供更多例子来学习如何完成它?
谢谢。
#!/bin/sh
test -n "$(grep 'app.asana.com/' ${1})" || {
echo >&2 "ERROR: Commit message is missing Asana's task link.\n\nPlease append the Asana's task link relative to this commit into the commit message."
exit 1
}
.git/hooks
目录下拥有一个commit-msg
文件。为了解决这个问题,我将commit-msg
添加到项目文件夹中(这样我就可以拉取它),并添加了另一个名为commit-msg-hook.sh
的文件,其中包含以下内容:#!/bin/sh
cp commit-msg .git/hooks/commit-msg
chmod +x .git/hooks/commit-msg
echo "\nThe commit-msg hook was added to git hooks"
我希望你能给予我改进的建议。谢谢。
chmod a+x .git/hooks/commit-msg
是为了使commit-msg可执行,以便它能够与git一起运行。但是,如果文件(因此也包括该命令)没有+x
,则该文件将永远无法执行,因此在实际文件中包含此命令是没有意义的。这篇文章是从2013年开始的,所以如果我错了,请任何人纠正我。肯定有其他人注意到了这一点吧? - redfox05