5

我一直在使用 Subclipse API 为 Eclipse 创建一个插件,用于侦听通过 Subclipse 插件发生的 Subversion 事件。我基本上是在实现一个侦听器接口,然后在运行时收到有关正在发生的事件的通知。

我想做类似的事情,但对于 Git。在使用另一个插件时,EGit(基于 JGit 构建)似乎是最佳选择。不过,我对他们的 API 没有太多经验。我想知道是否有人知道 EGit 或底层 JGit 是否具有用于侦听 Git 事件(如提交、推送、拉取等)的类似 API 接口?

谢谢!

4

2 回答 2

6

您可以通过以下方法通过 JGit 为所有存储库或单个存储库注册侦听器:

通知所有存储库的全局侦听器:

org.eclipse.jgit.lib.Repository.getGlobalListenerList().addIndexChangedListener
org.eclipse.jgit.lib.Repository.getGlobalListenerList().addConfigChangedListener
org.eclipse.jgit.lib.Repository.getGlobalListenerList().addRefsChangedListener

单个存储库上的侦听器:

org.eclipse.jgit.lib.Repository.getListenerList().addIndexChangedListener
org.eclipse.jgit.lib.Repository.getListenerList().addConfigChangedListener
org.eclipse.jgit.lib.Repository.getListenerList().addRefsChangedListener

这些监听器支持索引更改、存储库配置更改以及存储库引用(分支、标签等)更改的事件。

您可以通过以下方式找到在 EGit 中注册的所有存储库:

通过调用以下命令获取 EGit 中存在的所有存储库的绝对路径:

org.eclipse.egit.core.Activator.getDefault().getRepositoryUtil().getConfiguredRepositories()

您可以通过为从前一个方法返回的路径创建一个文件来获取特定存储库对象的句柄,然后使用该文件调用以下命令:

org.eclipse.egit.core.Activator.getDefault().getRepositoryCache().lookupRepository
于 2011-11-03T13:57:42.010 回答
0

到目前为止,还没有可用的公共侦听器或扩展点。Commit 对话框中有一些扩展点,可能还有其他对话框,但这些都是非公开的,将来可能会更改。但是,要跟踪您的兴趣,您应该在 EGit 项目中的Eclipse Bugzilla提交增强请求(我认为,已经有一些类似功能的请求,因此您可以搜索它们并为它们投票)。

于 2011-10-28T11:44:39.560 回答