Путаница при выборе между JavaGit, JGit и EGit


83

Я делаю Java-приложение, использующее Git. Я обнаружил, что есть что-то под названием JavaGit , EGit и JGit .

Я знаю, что JavaGit и EGit / JGit разные. Я не понимаю разницы между EGit и JGit. Оба размещены в проектах Eclipse, но один, похоже, связан с Eclipse, а другой нет.

Я не использую Eclipse и не планирую использовать его, поэтому меня действительно не волнует «интеграция с Eclipse».

JGit каким-то образом связан с Eclipse? (Он размещен на www.eclipse.org, и в документации JGit также есть много ключевых слов eclipse внутри)

Из трех, что мне понадобится для подключения моей Java-программы (написанной не в Eclipse) для работы с репозиториями Git?

Я бы предпочел автономную библиотеку Git (т.е. не зависящую от локальной установки Git)

РЕДАКТИРОВАТЬ: еще один вопрос:

  • Поддерживает ли JGit команду Git bundle ?

РЕДАКТИРОВАТЬ: Я нашел ответ - да (еще не пробовал). Он находится в transportпакете в классе под названиемBundleWriter

Ответы:


57

Вы можете использовать JGit как отдельную библиотеку, но, как упоминалось на домашней странице JGit :

JGit можно найти в:
* EGit, поставщик группы Eclipse для Git

В этом смысле JGit связан с Eclipse, поскольку EGit использует функции JGit для разработки подключаемого модуля Eclipse Git.
Учитывая, что все проекты Eclipse теперь имеют версии в репозиториях Git (вместо прежних репозиториев CVS), я бы рассмотрел JGit для вашего проекта Java, поскольку кажется, что:

  • JavaGit довольно долго не обновляется (2008 г.)
  • Eclipse стремится предложить хорошую поддержку Git через EGit, что должно обеспечить дальнейшее развитие JGit (используется EGit).

Комментирует Турбьёрн Равн Андерсен :

Несмотря на то, что вы говорите, что Egit использует JGit, из приведенного выше не совсем ясно, что EGit - это плагин Eclipse для git, предоставляющий поддержку git таким же образом, как CVS уже поддерживается в Eclipse.

Перенос проектов Eclipse с CVS на Git продолжается , и о нем здесь сообщается (Крисом Анищиком).

Я отслеживал разговоры о переносе кода проекта с CVS на Git в списках разработчиков нескольких проектов.
Похоже, что большинство разработчиков понимают ценное предложение миграции, несмотря на их опасения, что с миграцией приходит много нового обучения, поскольку они понимают, как сказать продуктивность в новой среде.

Неизбежно, дискуссия о поставщике группы для Git, разрабатываемой проектом EGit, становится важной частью разговора. «Готова ли EGit к выходу в прайм-тайм?» часто возникает вопрос

Официальная ошибка, иллюстрирующая приверженность Eclipse обеспечению «адекватной инструментальной поддержки» для всех проектов Eclipse, которые теперь находятся в репозитории Git, - это ошибка 293192 .

Чтобы отказаться от старой VCS в пользу git ( ошибка 270854 ), должны быть доступны соответствующие инструменты. Эта ошибка создана, чтобы отслеживать это.
[...] Я открыл / связал соответствующие ошибки EGit , чтобы иметь лучшую видимость / отслеживание того, чего не хватает.

Таким образом, Egit - единственный проект, упомянутый в этой ошибке, который обеспечивает указанную адекватную инструментальную поддержку для новой (D) VCS, выбранной для всех проектов Eclipse.

( Ошибка 270854 о принизить старых VCS инструментов , который включает в себя в основном CVS) .


Только что (17 марта 2001 г.): Состояние Git в Eclipse - начало 2011 г. ( Крис Анищик ):

Я счастлив, что с прошлого года ситуация продвинулась довольно далеко, судя по статистике Eclipse Marketplace и вкладам сообщества, которые получили проекты.

Скорость установки EGit

Ну и что дальше? Что касается инструментов, мы приближаемся к выпуску 1.0 (который запланирован для выпуска Indigo).
Инструменты git в Eclipse в наши дни намного лучше, если вам нужна помощь или у вас есть вопросы, начните с самого превосходного Руководства пользователя EGit .

Если вы являетесь eclipse.orgпроектом, рассмотрите возможность начала процесса переноса репозитория проекта в Git. На Git уже есть много проектов eclipse.org .
Было бы неплохо увидеть, что все проекты eclipse.org планируют перейти на Git к выпуску Indigo.


Несмотря на то, что вы говорите, что Egit использует JGit, из приведенного выше не совсем ясно, что EGit - это плагин Eclipse для git, предоставляющий поддержку git таким же образом, как CVS уже поддерживается в Eclipse.
Торбьёрн Равн Андерсен

так что то, что он размещен на eclipse.org, не означает, что он имеет какое-то отношение к Eclipse?
Jus12

@ Jus12 @ Thorbjørn: Я добавил несколько элементов, чтобы проиллюстрировать роль Egit в проектах Eclipse.
VonC

Я согласен с тем, что JavaGit довольно старый, и я смотрел на него только на тот случай, если JGit окажется слишком сложным для использования.
Jus12

1
@ Jus12: HTTP-сервер Jetty теперь также размещен на Eclipse.org ( eclipse.org/jetty ), и он не имеет ничего общего с самой Eclipse IDE. Jetty можно использовать отдельно или встраивать в другие проекты, не связанные с Eclipse.
Peter Štibraný

43

Как один из авторов JGit и EGit, извините за недоразумение.

JGit - это легковесная, чистая библиотека Java с лицензией EDL (новый стиль BSD), реализующая систему контроля версий Git. Его можно использовать автономно и встраивать в такие приложения, как Gerrit, Eclipse, Netbeans и IntelliJ. EGit встраивает JGit, чтобы использовать его для работы с репозиториями Git и предоставлять конструкции Git из Eclipse. На данный момент JGit не поддерживает команду git-bundle, но вы можете внести свой вклад в поддержку, это не должно быть так сложно, см. Наше руководство для участников.


4

Просто чтобы вмешаться, поскольку я только что наткнулся на этот вопрос.

Есть разница между Eclipse Foundation и Eclipse IDE. Фонд является головной организацией, а IDE - одним из проектов, разработанных фондом. Итак, важно знать, что точно так же, как Apache начал с веб-сервера и разветвился, чтобы стать Foundation, на котором размещается ряд проектов, Eclipse Foundation теперь расширилась за пределы своих «корней» в среде IDE.

Итак, в этом контексте код JGit предоставляет Java API для команд git, а EGit использует JGit для обеспечения поддержки git для Eclipse IDE.

Лично меня это также иногда немного сбивает с толку, а иногда кажется, что столь много происходящего в некотором роде снизило внимание этих организаций; однако я также вижу пользу в наличии одной зонтичной организации вместо 20 похожих, но разных организаций.


3

JGit - это git, реализованный с нуля как библиотека Java, тогда как JavaGit - это (был?) API Java, обертывающий встроенную реализацию git (т.е. вызывающую собственную командную строку git).

EGit - это Git Eclipse Team Provider, интегрирующий JGit в Eclipse IDE и предоставляющий пользовательский интерфейс для работы с Git изнутри Eclipse.

В то же время большая часть сообщества Eclipse, а также большое количество корпоративных разработчиков используют EGit / JGit (вот почему компании, поддерживающие эти проекты, вкладывают в это деньги). Смотрите страницы проекта и, о, если вы хотите узнать, кто вносит свой вклад.


0

JGit - это библиотека для управления репозиторием git. Вы не используете только JGit, если только не напишите программу для управления репозиторием git так, как вам нравится.

Если вы используете Eclipse в качестве IDE, вы устанавливаете EGit как плагин для управления версиями (по умолчанию в Indigo). EGit вызывает JGit, поэтому у вас также установлен JGit, если вы устанавливаете EGit.

Обратите внимание: для Netbeans вы устанавливаете NBGit как плагин для управления версиями. NBGit также вызывает JGit.

JavaGit: активно не поддерживается?


0

JGit - это реализация Git на Java. Это библиотека, которую также можно использовать в ваших собственных приложениях. Он также предоставляет своего рода операции CLI. С другой стороны, EGit - это плагин поставщика команды Eclipse для Git, который использует JGit в качестве реализации Git. Упрощенно можно сказать, что EGit - это часть пользовательского интерфейса, а JGit - фоновая часть. JGit не зависит от EGit, но EGit зависит от JGit.

Источник: https://www.eclipse.org/forums/index.php/t/273443/

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.