我在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
在同一台计算机上答案 0 :(得分:1)
post-receive
挂钩在你要推送的git repo服务器上运行。它没有与您用于推送到repo的客户端的链接 - 无论是命令行,Eclipse还是任何其他工具。
确保命令行和Eclispe都推送到同一个repo,并且该repo是你安装了hook的那个。
答案 1 :(得分:1)
看来这种行为是由于Eclipse使用了Jgit,再加上repo是本地路径。
据我所知,当Eclipse推送到本地路径上的仓库(/path/to/repo
或file:///path/to/repo
)时,所有功能都由Jgit提供;命令行Git工具未使用。 Jgit目前不支持git hooks。
当我更改远程URL以使用ssh://语法(连接到同一本地机器)时,即使Eclipse推送提交,钩子也会运行。
参考文献: