我一直在使用Subclipse API为Eclipse创建一个插件,用于侦听通过Subclipse插件发生的Subversion事件。我基本上实现了一个监听器接口,然后在运行时通知接收事件。
我想做类似的事情,但对于Git。在使用其他插件时,似乎EGit(基于JGit构建)将是最佳选择。我对他们的API没有多少经验。我想知道是否有人知道EGit或底层JGit是否有类似的API接口来监听Git事件(例如提交,推送,拉取等)?
谢谢!
答案 0 :(得分:6)
您可以通过以下方法通过JGit为所有存储库或单个存储库注册侦听器:
通知所有存储库的全局侦听器:
org.eclipse.jgit.lib.Repository.getGlobalListenerList().addIndexChangedListener
org.eclipse.jgit.lib.Repository.getGlobalListenerList().addConfigChangedListener
org.eclipse.jgit.lib.Repository.getGlobalListenerList().addRefsChangedListener
invidiual存储库中的监听器:
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()
您可以通过为上一个方法返回的路径创建文件来获取特定Repository对象的句柄,然后使用该文件调用以下内容:
org.eclipse.egit.core.Activator.getDefault().getRepositoryCache().lookupRepository
答案 1 :(得分:0)
到目前为止,还没有可用的公共听众或扩展点。 “提交”对话框中还有一些扩展点,也可能是其他对话框,但这些都是非公开的,将来可能会更改。但是,为了跟踪您的兴趣,您应该在EGit项目的Eclipse Bugzilla提交增强请求(我认为,已经有一些类似功能的请求,因此您可以搜索它们并为它们投票)。