【问题标题】:Git on windows over HTTP. post-receive hook not working基于 HTTP 的 Windows 上的 Git。接收后挂钩不起作用
【发布时间】:2015-03-04 01:21:06
【问题描述】:

我已将 Windows 上的 msysgit 配置为基于 HTTP 的服务器。我已将 Apache 服务器配置为将请求转发到 git-http-backened.exe。当我克隆并尝试从远程 PC 推送到服务器时,一切正常。但是post-receive 钩子不起作用。

我已经添加到post-receive

#!/bin/sh
echo "Hook got triggered.." > c:/Repos/logs.txt

当我手动执行脚本时,我看到打印的日志。

但是当我从远程系统推送它时,文件正在更新。推送工作正常,但似乎没有调用钩子,因为没有打印日志。

post-receive 的权限是 -rwxr-xr-x

当我通过 SSH 配置 git 时,我的 post-receive 过去可以毫无问题地发送邮件。将 git 更改为通过 HTTP 工作后,我遇到了问题。我不知道,需要做哪些额外的更改才能使钩子起作用。

【问题讨论】:

  • 您的接收后挂钩在哪里?它是否在您要推送的裸仓库xxx.git 的hooks 文件夹中?
  • 它在 xxx.git/.git/hooks 文件夹中。是的,xxx.git 是我正在推送的仓库。

标签: git apache githooks git-post-receive smart-http


【解决方案1】:

xxx.git/.git/hooks 文件夹。

这是行不通的:如果 repo 是一个裸 repo(如命名约定 xxx.git/ 所示,即以 .git 结尾的文件夹),那么 hooks/ 文件夹应该在它的正下方。

xxx.git/hooks

当您设置 Git 服务器时,该服务器的最佳做法仍然是仅管理裸存储库。
见:

【讨论】:

  • 我这样做了,但没有区别。以前我的 repo 是一个普通的 repo,所以我放了 xxx.git/.git/hook。现在我用一个裸回购测试。对于两者来说,它都可以工作。
  • @deepika 但你确定这是一个裸仓库吗? (stackoverflow.com/a/1830712/6309) 你的钩子脚本是否命名为“post-receive”而没有任何扩展名? (所以不是post-receive.sh 或post-receive.bat)?
  • 是的,现在我确定在了解了裸仓库和普通仓库之间的区别之后。它只是“接收后”,没有任何扩展。通过 SSH 为 GIT 工作的相同文件。我读到它的 HTTP 或 SSH 调用钩子没有任何区别。
  • @deepika 在您将(使用 ssh)推送到裸仓库 xxx.git/hooks/post-receive 时是否有效?
猜你喜欢
  • 1970-01-01
  • 2011-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-19
相关资源
最近更新 更多