gitolite中的每个分支、每个repo提交钩子
我想添加一个提交钩子,该钩子在gitolite/git服务器上接收到只针对给定分支和repo组合的推送时起作用(repo“dog”上的分支“cat”) 我的环境: git版本1.7.4.1 到目前为止我所做的:gitolite中的每个分支、每个repo提交钩子,git,gitolite,githooks,git-post-receive,Git,Gitolite,Githooks,Git Post Receive,我想添加一个提交钩子,该钩子在gitolite/git服务器上接收到只针对给定分支和repo组合的推送时起作用(repo“dog”上的分支“cat”) 我的环境: git版本1.7.4.1 到目前为止我所做的: 在git/gitolite服务器上的/home/git/repositories/dog.git/hooks/post-receive.secondary中触摸了一个文件 编辑了包含以下内容的文件: #!/bin/sh # refname="$1" oldrev="$2" newrev=
/home/git/repositories/dog.git/hooks/post-receive.secondary
中触摸了一个文件#!/bin/sh
#
refname="$1"
oldrev="$2"
newrev="$3"
if [ "$refname" == "refs/heads/cat" ]
then
touch /tmp/test
fi
.secondary
”扩展名有关:
- 更新钩子,因为它在所有repo中都使用,并且对gitolite的访问控制至关重要
- 更新后钩子,因为它仅用于
repo,用于“编译”配置等等gitolite admin
- (
仅在镜像被激活时才涉及,在gitolite安装中不应如此)post receive
post receive.secondary
,只需要在/hooks/common/
中声明一个post receive
钩子,如“”中所述
报告在评论中得出结论: 我需要在存储库文件夹中设置一个
post receive
hook(而不是第二个),我认为这是它无法执行的主要原因
最后我唯一改变的是将烫发设置从700
(这本来应该可以吗?)更改为755
钩子现在可以可靠地执行 我不需要运行
gl设置
脚本。此外,我在STDIN
上将上述var分配代码更改为“while”
如果我看一下,只有两个钩子与“.secondary
”扩展有关:
- 更新钩子,因为它在所有repo中都使用,并且对gitolite的访问控制至关重要
- 更新后钩子,因为它仅用于
repo,用于“编译”配置等等gitolite admin
- (
仅在镜像被激活时才涉及,在gitolite安装中不应如此)post receive
post receive.secondary
,只需要在/hooks/common/
中声明一个post receive
钩子,如“”中所述
报告在评论中得出结论: 我需要在存储库文件夹中设置一个
post receive
hook(而不是第二个),我认为这是它无法执行的主要原因
最后我唯一改变的是将烫发设置从700
(这本来应该可以吗?)更改为755
钩子现在可以可靠地执行 我不需要运行
gl设置
脚本。此外,我在STDIN
上将上述var分配代码更改为“while”
如果在脚本中添加回音,是否显示?你有gitolite v2或v3吗?@VonC-从src/CHANGELOG我相信我正在运行v2.0,但我找不到一个二进制文件来执行以验证这一点。我将检查脚本中的echo命令并做出简短的响应示例:如果gitolite中有“
gl xxx
”命令,这是V2。@VonC-它们不在我的路径中,但在/home/git/.gitolite/src中有gl xxx命令,是的,如果我手动运行脚本,传入refname,则执行良好,它只是没有被执行,或者在我将代码提交到那个repose上的那个分支时以某种方式失败。如果您在脚本中添加了一个echo,它会被显示吗?你有gitolite v2或v3吗?@VonC-从src/CHANGELOG我相信我正在运行v2.0,但我找不到一个二进制文件来执行以验证这一点。我将检查脚本中的echo命令并做出简短的响应示例:如果gitolite中有“gl xxx
”命令,这是V2。@VonC-它们不在我的路径中,但在/home/git/.gitolite/src中有gl xxx命令,是的,如果我手动运行脚本,传入refname,则执行良好,它只是没有被执行,或者在我将代码提交到该repo上的分支时以某种方式失败,因为有一个post receive.mirrorpush
symlink,这就是我使用.secondary
文件名的原因。关于将钩子放在/hooks/common/
中,我明确希望这个钩子只在提交到单个存储库时生效,而我认为公共位置的钩子会在提交到任何存储库时触发repository@user1459145不您应该使用.secondary,因为有一个post-receive.mirrorpush
:文档很清楚:“作为post-receive.mirrorpush
发货,它被重命名为“post-receive
”,并作为镜像设置的一部分安装”:如果您没有看到“post-receive
”,您可以创建自己的镜像。感谢您的澄清。但是,我已将该文件移动到“接收后”,并运行了第二次提交,但仍然没有看到创建的临时文件。@user1459145您是否在该脚本中添加了回音,以查看是否至少调用了该文件?您是否首先通过再次运行gl setup
将脚本符号链接到所有repo?感谢您的坚持不懈。回音就在那个剧本里,是的。因此,脚本的正确主位置是/hooks/common/post-receive
,并且只有当该repo具有从/hooks/post-receive
到/hooks/common/post-receive
的符号链接时,它才会对给定的存储库实际执行,这就是我使用.secondary
文件名的原因。关于将钩子放入/hooks/common/
,我明确地希望这个钩子只用于