Git post 接收挂钩未运行

Git post receive hook is not running

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

大部分建议设置权限,这样文件才能执行。完成 - 设置为 777.

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

接收后看起来像这样:

#!/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 上调用一些 link 将当前日期保存到数据库中。所以当用户打开网站时 - 他可以看到网站上次更新的时间,所以我不需要在每次网站更新时手动设置时间。

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

These scripts run before and after pushes to the server.

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

更新

尝试将 post-receive 放入我用于推送的计算机中,正如我预期的那样 - ubuntu 服务器和我的计算机中均未创建 test.txt。

更新

我是怎么实现的,就是用post-merge hook。它是客户端类别。我的服务器是一个客户端,相对于它的意思是位桶。所以当我拉到我的服务器时,合并完成,所以我的脚本被执行。

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

所以你需要查看 client side hooks

tldr;git拉取后没有具体hook.