Git post receive hook没有运行

时间:2015-01-06 09:06:23

标签: git hook git-post-receive

我搜索了问题,但它仍然没有回答我的问题。

他们中的大多数建议设置权限,因此可以执行该文件。完成 - 设置为777。

传输协议必须不是http,而是ssh。我希望它是,在我检查浏览存储库的git扩展中 - 它是从git@bitbucket.org开始的,所以它应该是ssh协议。

post-receive看起来像这样:

#!/bin/sh -x

echo 'test';

git log -1 HEAD --pretty=format:"%x09%ad%x09";

touch ~/repos/develop/dashboard/test.txt;

所以当我运行git pull时,那些应该被执行。

我尝试将post-receive重命名为post-checkout - 然后在调用git checkout时执行。

但是用git pull - post-receive就像被忽略了。

还有一些提到noexec分区。但是我希望如果结账后工作正常,那么这也必须有效,因为还需要执行结账后。

我还应该检查什么?

更新

我会告诉我为什么选择这个钩子,也许你可以建议另一种方式。

我想在git pull上调用一些链接,这会将当前日期保存到数据库中。因此,当用户打开网站时 - 他可以看到网站上次更新的时间,因此我不需要手动设置每次网站更新的时间。

更新 好的,我看到有趣的一句话:

  

这些脚本在推送到服务器之前和之后运行。

我从我编写代码的计算机上推送到服务器。 我的ubuntu服务器怎么知道我推了?我应该将接收后的文件放在我编程和推送的计算机中吗?我可以尝试,但不知何故它似乎不可能有所帮助。

更新

尝试将post-receive放在我用来推送的计算机中,正如我所料 - 在ubuntu服务器和我的计算机中都没有创建test.txt。

更新

我是如何实现使用合并后挂钩的。它是客户端类别。我的服务器是一个相对于比特桶的客户端。所以当我拉到我的服务器时,合并完成,所以我的脚本被执行了。

1 个答案:

答案 0 :(得分:4)

这些脚本(预接收,后接收和更新)在推送到服务器之前和之后运行,而不是在客户端运行。

所以你需要查看client side hooks

tldr; git pull之后没有特定的钩子。