0

post-receive在我的 Git 存储库上设置了一个基本的钩子:

#!/bin/bash
touch /tmp/confirm-hook
/usr/bin/curl http://__server__/git/notifyCommit?url=file:///srv/git/repo.git

这样做的目的是轮询 Jenkins 自动构建。

当我git push从命令行运行时,钩子运行并安排了 Jenkins 轮询。我可以通过检查修改后的时间戳来确认钩子本身已经运行/tmp/confirm-hook

但是,当我从 Eclipse 中推送时(例如,团队 > 推送到上游),提交被发送到 repo,但post-receive钩子没有运行。没有预定的民意调查,也没有对/tmp/confirm-hook.

这是 Eclipse 的 Git 实现的特殊之处吗?还是我错误地配置了钩子?

万一有所不同,工作副本和 repo 使用 /local/path/syntax 在同一台计算机上

4

2 回答 2

1

post-receive钩子在您推送到的 git repo 所在的服务器上运行。它与您用来推送到存储库的客户端没有任何链接——无论是命令行、Eclipse 还是任何其他工具。

确保命令行和 Eclispe 都推送到同一个 repo,并且该 repo 是您安装 hook 的地方。

于 2013-06-04T05:36:11.030 回答
1

这种行为似乎是由于 Eclipse 使用了 Jgit,再加上 repo 是本地路径。

据我所知,当 Eclipse 推送到本地路径(/path/to/repofile:///path/to/repo)上的存储库时,所有功能都由 Jgit 提供;不使用命令行 Git 工具。Jgit 目前不支持 git 钩子。

当我将远程 URL 更改为使用 ssh:// 语法(连接到同一台本地计算机)时,即使 Eclipse 推送提交,挂钩也会运行。

参考:

于 2013-06-04T07:54:15.137 回答