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

我想做类似的事情,只是为了Git。当使用另一个插件时,EGit(基于JGit构建)似乎是最佳选择。我对他们的API没有太多经验。我想知道是否有人知道EGit或底层的JGit是否具有类似的API接口来监听Git事件(例如commit,push,pull等)?

谢谢!

最佳答案

您可以通过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

07-26 07:22