Zamieszanie przy wyborze między JavaGit, JGit i EGit


83

Tworzę aplikację Java, która używa Git. Odkryłem, że istnieje coś, co nazywa się JavaGit , EGit i JGit .

Wiem, że JavaGit i EGit / JGit są różne. To, czego nie rozumiem, to różnica między EGit i JGit. Oba są hostowane w projektach Eclipse, ale jeden wydaje się być powiązany z Eclipse, a drugi nie.

Nie używam Eclipse i nie planuję tego, więc naprawdę nie obchodzi mnie „integracja Eclipse”.

Czy JGit jest w jakiś sposób połączony z Eclipse? (Jest hostowany na www.eclipse.org i dokumentacja JGit zawiera również wiele słów kluczowych „eclipse”)

Czego z tych trzech będę potrzebować, aby połączyć mój program Java (nie napisany w Eclipse) do pracy z repozytoriami Git?

Wolałbym samodzielną bibliotekę Git (tj. Bez polegania na lokalnej instalacji Git)

EDYCJA: Jeszcze jedno pytanie:

EDYCJA: znalazłem odpowiedź - tak (jeszcze jej nie próbowałem). Znajduje się w transportpakiecie w klasie o nazwieBundleWriter

Odpowiedzi:


57

Możesz używać JGit jako samodzielnej biblioteki, ale jak wspomniano na stronie głównej JGit :

JGit można znaleźć w:
* EGit, dostawcy zespołu Eclipse dla Git

W tym sensie JGit jest połączony z Eclipse, ponieważ EGit używa funkcji JGit do tworzenia wtyczki Eclipse Git.
Biorąc pod uwagę, że wszystkie projekty Eclipse są teraz wersjonowane w repozytoriach Git (zamiast wcześniejszych repozytoriów CVS), rozważyłbym JGit dla twojego projektu Java, ponieważ wydaje się, że:

  • JavaGit nie jest aktualizowana od dłuższego czasu (2008)
  • Eclipse zobowiązuje się do oferowania dobrego wsparcia dla Git poprzez EGit, co powinno zapewnić poprzez rozszerzenie rozwój JGit (używanego przez EGit).

Thorbjørn Ravn Andersen komentuje:

Chociaż mówisz, że Egit używa JGit, nie jest do końca jasne z powyższego, że EGit jest wtyczką Eclipse dla git, która zapewnia obsługę git w taki sam sposób, w jaki CVS jest już obsługiwany w Eclipse

Migracja projektów Eclipse z CVS do Git jest w toku i została opisana tutaj (przez Chrisa Aniszczyka).

Monitorowałem rozmowy dotyczące migracji kodu projektu z CVS do Git na listach deweloperów kilku projektów.
Wygląda na to, że większość programistów rozumie korzyści płynące z migracji, pomimo obaw, że wraz z migracją przychodzi wiele nowych doświadczeń, kiedy uczą się, jak powiedzieć, że jest produktywny w nowym środowisku.

Nieuchronnie dyskusja na temat dostawcy zespołu dla Git rozwijanego w ramach projektu EGit staje się ważną częścią rozmowy. „Czy EGit jest gotowy na czas największej oglądalności?” to często odbijające się pytanie

Oficjalnym błędem ilustrującym zobowiązanie Eclipse do zapewnienia „odpowiedniego wsparcia narzędziowego” dla wszystkich projektów Eclipse dostępnych obecnie w repozytorium Git jest błąd 293192 .

Aby zrezygnować ze starego systemu VCS na rzecz git ( błąd 270854 ), powinno być dostępne odpowiednie narzędzie. Ten błąd jest tworzony, aby to śledzić.
[...] Otworzyłem / połączyłem odpowiednie błędy EGit , aby mieć lepszą widoczność / śledzenie tego, czego brakuje.

Tak więc Egit jest jedynym projektem, do którego odnosi się ten błąd, który zapewnia odpowiednie wsparcie narzędziowe dla nowego (D) VCS wybranego dla wszystkich projektów Eclipse.

( błąd 270854 dotyczy wycofania starych narzędzi VCS , które obejmują zasadniczo CVS).


Just in (17 marca 2001): The State of Git at Eclipse - Early 2011 ( Chris Aniszczyk ):

Cieszę się, że od zeszłego roku zaszło dość daleko, na podstawie statystyk Eclipse Marketplace i wkładu społeczności, jaki otrzymały projekty.

Szybkość instalacji EGit

Więc, co dalej? Jeśli chodzi o narzędzia, zbliżamy się do wydania 1.0 (które jest planowane dla wydania Indigo).
Narzędzia git w Eclipse są obecnie znacznie lepsze, jeśli potrzebujesz pomocy lub masz pytania, zacznij od najbardziej doskonałego Podręcznika użytkownika EGit .

Jeśli jesteś eclipse.orgprojektem, rozważ rozpoczęcie procesu przenoszenia repozytorium projektu do Git. W Gicie jest już wiele projektów eclipse.org .
Byłoby miło widzieć, że wszystkie projekty eclipse.org planują przenieść się na Git przed wydaniem Indigo.


Chociaż mówisz, że Egit używa JGit, nie jest do końca jasne z powyższego, że EGit jest wtyczką Eclipse dla git, która zapewnia obsługę git w taki sam sposób, w jaki CVS jest już obsługiwany w Eclipse.
Thorbjørn Ravn Andersen

więc tylko dlatego, że jest hostowany na eclipse.org, nie oznacza, że ​​ma coś wspólnego z Eclipse?
Jus12

@ Jus12 @ Thorbjørn: Dodałem kilka elementów ilustrujących rolę Egit w projektach Eclipse.
VonC

Zgadzam się, że JavaGit jest dość stara i patrzyłem na nią tylko na wypadek, gdyby JGit okazał się zbyt skomplikowany w użyciu.
Jus12

1
@ Jus12: Serwer Jetty HTTP jest teraz również hostowany na Eclipse.org ( eclipse.org/jetty ) i nie ma nic wspólnego z samym Eclipse IDE. Jetty może być używane samodzielnie lub osadzone w innych projektach niezwiązanych z Eclipse.
Peter Štibraný

43

Jako jeden z autorów JGit i EGit przepraszamy za zamieszanie.

JGit to licencjonowana w technologii EDL (nowy styl BSD), lekka, czysta biblioteka Java implementująca system kontroli wersji Git. Może być używany samodzielnie i jest osadzony w aplikacjach takich jak Gerrit, Eclipse, Netbeans i IntelliJ. EGit osadza JGit, aby używać go do pracy z repozytoriami Git i udostępniać konstrukcje Git z poziomu Eclipse. W tej chwili JGit nie obsługuje polecenia git-bundle, ale możesz wnieść wsparcie, nie powinno to być takie trudne, zapoznaj się z naszym przewodnikiem dla współpracowników.


4

Tylko po to, żeby wtrącić się, ponieważ właśnie natknąłem się na to pytanie.

Istnieje różnica między Eclipse Foundation a Eclipse IDE. Fundacja jest organizacją patronacką, a IDE jest jednym z projektów rozwijanych przez fundację. Tak więc ważne jest, aby wiedzieć, że tak jak Apache zaczynał od serwera WWW i rozwijał się, by stać się Fundacją obsługującą wiele projektów, tak samo Fundacja Eclipse rozszerzyła się teraz poza swoje „korzenie” w IDE.

Zatem w tym kontekście kod JGit zapewnia Java API dla poleceń git, podczas gdy EGit używa JGit do zapewnienia obsługi git dla Eclipse IDE.

Osobiście uważam to również czasami za trochę zagmatwane, a czasami wydaje mi się, że posiadanie tak dużej ilości rzeczy w pewnym sensie zdegradowało centrum zainteresowania tych organizacji; jednakże dostrzegam również użyteczność posiadania jednej organizacji parasolowej zamiast 20 podobnych, ale różnych organizacji.


3

JGit jest implementowany od podstaw jako biblioteka Java, podczas gdy JavaGit jest (był?) Java API opakowującym natywną implementację git (tj. Wywołuje natywną linię poleceń git).

EGit jest dostawcą zespołu Git Eclipse integrującym JGit z Eclipse IDE i zapewnia interfejs użytkownika do pracy z Git z poziomu Eclipse.

W międzyczasie duża część społeczności Eclipse, a także duża liczba programistów korporacyjnych korzysta z EGit / JGit (to jest powód, dla którego firmy wspierające te projekty wkładają w to pieniądze). Zobacz strony projektu i ohloh, jeśli chcesz dowiedzieć się, kto wnosi wkład.


0

JGit to biblioteka do manipulowania repozytorium git. Nie używasz samego JGit, chyba że napiszesz program do manipulowania repozytorium git w sposób, w jaki lubisz.

Jeśli używasz Eclipse jako IDE, instalujesz EGit jako wtyczkę kontroli wersji (domyślnie w Indigo). EGit wywołuje JGit, więc masz również zainstalowany JGit, jeśli zainstalujesz EGit.

Uwaga, w przypadku Netbeans instalujesz NBGit jako wtyczkę do kontroli wersji. NBGit nazywa również JGit.

JavaGit: nie jest aktywnie obsługiwany?


0

JGit to implementacja Gita w Javie. Jest to biblioteka, z której można również korzystać we własnych aplikacjach. Zapewnia również pewne operacje CLI. EGit z drugiej strony to wtyczka dostawcy zespołu Eclipse dla Git, która wykorzystuje JGit jako implementację Git. Upraszczając, można powiedzieć, że EGit to część interfejsu użytkownika, a JGit część tła. JGit nie zależy od EGit, ale EGit zależy od JGit.

Od: https://www.eclipse.org/forums/index.php/t/273443/

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.