我创建了一个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
Run Code Online (Sandbox Code Playgroud)
当我尝试这样提交时,会发生错误并阻止提交.
$ git commit -m "reffrffffeffff fffeef"
Error
Run Code Online (Sandbox Code Playgroud)
然后我做以下事情:
$ cd myrepo
$ mkdir .hooks
$ mv .git/hooks/commit-msg .hooks/commit-msg
$ ln -s .hooks/commit-msg .git/hooks/commit-msg
Run Code Online (Sandbox Code Playgroud)
并尝试使用相同的消息再次提交.提交成功.我想我可能在上面的步骤中做错了什么?
任何人都可以告诉我如何建立一个客户端钩子,并让每个开发人员从这个钩子获得限制?
你做了一个糟糕的象征性链接.该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'
Run Code Online (Sandbox Code Playgroud)
如您所知,commit-msg钩子是客户端钩子.如果您希望每个开发人员的提交消息都拒绝,如果他们不遵循某些方案,您需要让开发人员自己安装钩子.您不能将挂钩作为存储库的一部分进行维护,但将它们保存在另一个Git存储库中是一种选择.(要清楚,您可以将它们保存在您的存储库中,但您的开发人员仍然需要在.git/hooks目录中创建符号链接,就像您所拥有的那样).
如果你真的想强迫开发人员被钩子限制,请查看服务器端钩子.pre-receive例如,您可以使用检查所有推送的提交消息是否符合您的方案.
Pro Git的第8.3章(自定义Git - Git Hooks)是一个很好的资源.那里有一些高质量的步道来帮助你.您还可以查看.git/hooks存储库中包含的示例文件.
| 归档时间: |
|
| 查看次数: |
8189 次 |
| 最近记录: |