繁体   English   中英

Git 服务器端挂钩未运行?

[英]Git Server Side Hooks not running?

我是 Git 服务器端钩子的新手,我遇到了一个问题,似乎钩子根本没有运行。 我的 Git 存储库是一个裸存储库。

我想要做的就是从 repo 中提取一个文件并将其写入其他地方的磁盘。 我不需要整个档案。

在远程(原始)服务器上,我编写了此文件并将其粘贴在/my/path/repo.git/hooks

#!/bin/sh

# For debugging
echo "HELLO" > /my/path/hello.txt

# Auto-deploy thefile.php to /my/path/ every time something is pushed to this repo
exec git -C /my/path/repo.git show master:thefile.php > /my/path/thefile.php

我已经验证了钩子的权限:

-rwxrwxr-x 1 webadmin webadmin 543 Jan 15 16:27 post-update

如果我在我的服务器上手动运行脚本,使用$ ./path/to/repo.git/hooks/post-update ,一切正常。 hello.txtthefile.php一起thefile.php

但是当我将我的本地仓库推送到原点时,什么都没有改变。 我正在通过恢复最新提交并推送它来测试我的推送。 对于下一个测试,我删除该还原提交并强制推送以将其从origin/master删除。 这样,每次我推送时都会有实际提交的更改。 出于绝望,我确实进行了一次全新的提交,并进行了任意更改,但这没有任何区别。

我已经将这个钩子作为post-updatepost-receive尝试过。 两者似乎都不起作用。

我将不胜感激你们能提供的任何见解。

首先,确保您正在推送到您认为自己所在的裸仓库:在该裸仓库中,在服务器上,执行git statusgit log ,以确认您正在推送的提交确实存在。

其次,检查监听器的日志,它允许你推送到那个裸仓库:SSH 或 HTTPS。
如果您没有 HTTP(S) 侦听器,请考虑添加一个进行测试:最简单的是 gitea (只有一个可执行文件

第三,检查服务器上的 Git 版本,以防它太旧。

OP DOOManiac 在评论中添加

第二部分给了我一个线索,让我找到了真正的答案:

我正在通过文件系统共享(Windows 中的映射网络驱动器)进行推送,显然这些不会触发服务器上的挂钩,因为没有侦听器。

将所有内容更改为使用 SSH,现在可以正常工作了。 谢谢!
git config noff说一句,这也解释了为什么我的“ git config noff ”政策被忽略了。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM