Nano Hash - криптовалюты, майнинг, программирование

Как создать прослушиватель событий Git с помощью подключаемого модуля EGit/JGit?

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

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

Спасибо!


Ответы:


1

Вы можете зарегистрировать прослушиватели через 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
03.11.2011

2

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

28.10.2011
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..