我创建了一个 commit-msg 钩子myrepo/.git/hooks
.
#!/bin/sh
message=`cat $1`
c=`echo $message|grep -c 'fff'`
if[ $c -gt 0 ];then
echo "Error"
exit 1
fi
exit 0
当我尝试像这样提交时,会发生错误并阻止提交。
$ git commit -m "reffrffffeffff fffeef"
Error
然后我执行以下操作:
$ cd myrepo
$ mkdir .hooks
$ mv .git/hooks/commit-msg .hooks/commit-msg
$ ln -s .hooks/commit-msg .git/hooks/commit-msg
并尝试使用相同的消息再次提交。
提交成功。我想我可能在上述步骤中做错了什么?
谁能告诉我如何制作客户端挂钩,并使每个开发人员都受到此挂钩的限制?
您的步骤存在问题:
您创建了错误的符号链接。这commit-msg
符号链接指向.git/hooks/.hooks/commit-msg
。相反,试试这个:
$ cd myrepo
$ mkdir .hooks
$ cd .git/hooks
$ mv commit-msg ../../.hooks/commit-msg
$ ln -s !$ commit-msg # lazy: '!$' expands to '../../.hooks/commit-msg'
如何限制每个开发者的提交消息
如您所知,commit-msg
hook 是客户端钩子。如果您希望每个开发人员的提交消息在不遵循某种方案的情况下被拒绝,您需要让开发人员自己安装挂钩。您无法将挂钩作为存储库的一部分进行维护,但可以选择将它们保留在另一个 Git 存储库中。 (要明确的是,你could将它们保存在您的存储库中,但您的开发人员仍然需要在.git/hooks
目录,就像你一样)。
如果您确实想强制开发人员受到钩子的限制,请查看服务器端挂钩 https://git-scm.com/book/es/v2/Customizing-Git-An-Example-Git-Enforced-Policy#_an_example_git_enforced_policy。你可以使用pre-receive https://git-scm.com/book/es/v2/Customizing-Git-Git-Hooks#Server-Side-Hooks例如,检查所有推送的提交消息是否遵循您的方案。
第8.3章(自定义Git - Git Hooks) http://git-scm.com/book/ch8-3.htmlPro Git 是一个很好的资源。那里有一些高质量的演练可以帮助您。您还可以查看其中包含的示例文件.git/hooks
为您的存储库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)