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.
我搜索了问题,但它仍然没有回答我的问题。
大部分建议设置权限,这样文件才能执行。完成 - 设置为 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.