当我从Eclipse推送时,为什么我的Git post-receive hook不能运行?

时间:2013-06-03 22:07:19

标签: eclipse git jenkins

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

#!/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中推送(例如Team> Push to Upstream)时,提交将被发送到repo,但post-receive挂钩不会运行。没有预定的投票,也没有/tmp/confirm-hook的更新。

Eclipse的Git实现有什么特别之处吗?或者我错误地配置了挂钩?

如果它有所不同,工作副本和repo使用/ local / path / syntax

在同一台计算机上

2 个答案:

答案 0 :(得分:1)

post-receive挂钩在你要推送的git repo服务器上运行。它没有与您用于推送到repo的客户端的链接 - 无论是命令行,Eclipse还是任何其他工具。

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

答案 1 :(得分:1)

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

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

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

参考文献: