Как создать слушатель событий Git через плагин EGit / JGit? - PullRequest
5 голосов
/ 27 октября 2011

Я использовал API Subclipse для создания плагина для Eclipse, который прослушивает события Subversion, которые происходят через плагин Subclipse. Я в основном реализую интерфейс слушателя, который затем получает во время выполнения уведомление о происходящих событиях.

Я бы хотел сделать что-то подобное, но для Git. Кажется, что EGit (который построен на JGit) будет лучшим вариантом, когда дело доходит до использования другого плагина. У меня нет большого опыта работы с их API. Мне интересно, знает ли кто-нибудь, имеет ли EGit или базовый JGit аналогичный интерфейс API для прослушивания событий Git (таких как commit, push, pull и т.

Спасибо!

Ответы [ 2 ]

6 голосов
/ 03 ноября 2011

Вы можете зарегистрировать прослушиватели через 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
0 голосов
/ 28 октября 2011

Пока что нет общедоступных слушателей или точек расширения. В диалоговом окне «Зафиксировать» есть некоторые точки расширения, а также, возможно, другие диалоговые окна, но все они не являются общедоступными и могут быть изменены в будущем. Однако, чтобы отслеживать ваши интересы, вы должны подать запрос на улучшение на Eclipse Bugzilla в проекте EGit (я думаю, что уже есть некоторые запросы на аналогичные функции, поэтому вы можете искать их и голосовать за них) .

...