Confusion in choosing between JavaGit, JGit and EGit

JavaEclipseEgitJgit

Java Problem Overview


I am making a Java application that uses Git. I found that there is something called JavaGit, EGit and JGit.

I know that JavaGit and EGit/JGit are different. What I don't understand is the difference between EGit and JGit. Both are hosted on Eclipse projects but one seems to be Eclipse related and the other not.

I don't use Eclipse and I don't plan to, so I really don't care much about "Eclipse integration".

Is JGit somehow connected to Eclipse? (It is hosted on www.eclipse.org, and the documentation of JGit also has a lot of "eclipse" keywords inside)

Out of the three, what will I need to connect my Java program (not written in Eclipse) to work with Git repositories?

I would prefer a standalone Git library (i.e., without depending on a local Git installation)

EDIT: One more question:

EDIT: I found the answer -- it does (haven't tried it yet). It is in transport package in a class called BundleWriter

Java Solutions


Solution 1 - Java

You can use JGit as standalone library, but, as mentioned in the JGit Homepage:

>JGit can be found within:

  • EGit, Eclipse team provider for Git

In that sense, JGit is connected to Eclipse in that EGit uses JGit features to develop the Eclipse Git plugin.
Considering all Eclipse projects are now versioned in Git repos (instead of previously CVS repos), I would consider JGit for your Java project, as it seems that:

  • JavaGit isn't updated for quite some time (2008)
  • Eclipse is committed to offer a good support for Git through EGit, which should ensure by extension the development of JGit (used by EGit).

Thorbjørn Ravn Andersen comments:

> Even though you say that Egit uses JGit, it is not quite clear in the above that EGit is an Eclipse plugin for git giving git support in the same way that CVS is already supported in Eclipse

The migration of Eclipse projects from CVS to Git is in progress, and has been reported here (by Chris Aniszczyk).

> I’ve monitored conversations concerning the migration of project code from CVS to Git in the dev-lists of several projects.
Most developers, it seems, understand the value proposition of migrating, despite their concerns that with migration comes a whole lot of new learnin’ as they figure out how to say productive in the new environment.

> Inevitably, discussion about the team provider for Git being developed by the EGit project becomes an prominent part of the conversation. “Is EGit ready for primetime?” is often the question that bounced around

The official bug illustrated Eclipse commitment to provide "adequate tooling support" for all Eclipse projects now on Git repo is the bug 293192.

> In order to deprecate old VCS in favour of git (bug 270854), adequate tooling should be available. This bug is created to track that.
[...] I opened/linked relevant EGit bugs in order to have a better visibility/tracking of what's missing.

So Egit is the only project referenced in that bug to provide said adequate tooling support for the new (D)VCS chosen for all Eclipse projects.

(bug 270854 is about Deprecate old VCS tools, which includes essentially CVS.)


Just in (March 17th, 2001): The State of Git at Eclipse – Early 2011 (Chris Aniszczyk):

> I’m happy that things have come quite a long way since last year based on Eclipse Marketplace stats and the community contributions the projects have received.

EGit installation rate

> So what’s next? In terms of tooling, we’re getting closer to our 1.0 release (which is planned for the Indigo release).
The git tooling at Eclipse is much better these days, if you need help or have questions, please start with the most excellent EGit User Guide.

> If you’re an eclipse.org project, please consider starting the process to move your project repository to Git. There are a lot of eclipse.org projects already on Git.
It would be nice to see the all of the eclipse.org projects have plans to move to Git by the Indigo release.

Solution 2 - Java

As one of the authors of JGit and EGit, sorry for the confusion.

JGit is an EDL (new-style BSD) licensed, lightweight, pure Java library implementing the Git version control system. It can be used in a standalone fashion and is embedded in applications such as Gerrit, Eclipse, Netbeans and IntelliJ. EGit embeds JGit to use it to work with Git repositories and expose Git constructs from within Eclipse. At the moment, JGit doesn't support the git-bundle command but you're welcome to contribute support, it shouldn't be that hard, please see our contributor guide.

Solution 3 - Java

Just to chime in, as I just stumbled on this this question just now.

There is a difference between the Eclipse Foundation and the Eclipse IDE. The Foundation is the umbrella organization, while the IDE is one of the projects developed through the foundation. So, the important thing to know is that just as Apache started with the web server and branched out to become a Foundation hosting a number of projects, so has the Eclipse Foundation now expanded beyond its "roots" in the IDE.

So in this context the JGit code provides a Java API for git commands, while EGit uses JGit to provide git support for the Eclipse IDE.

Personally, I also find this a little confusing at times, and sometimes it almost seems that having so much going on has in some ways degraded the focus of these organizations; however I can also see the utility in having one umbrella organization instead of 20 similar but different organizations.

Solution 4 - Java

JGit is git implemented from scratch as a Java library whereas JavaGit is (was ?) a Java API wrapping the native git implementation (i.e. it's calling the native git command line).

EGit is the Git Eclipse Team Provider integrating JGit into the Eclipse IDE and is providing the UI to work with Git from inside Eclipse.

In the meantime a large part of the Eclipse community and also a large number of corporate developers is using EGit/JGit (that's the reason why the companies backing these projects put money into that). See the project pages ([1], [2]) and ohloh if you want to get some insight who is contributing.

Solution 5 - Java

JGit is a library to manipulate git repository. You do not use JGit alone, unless you write a program to manipulate git repository in the way you like.

If you use Eclipse as the IDE, you install EGit as a version control plugin (defaulted in Indigo). EGit calls JGit so you also have JGit installed if you install EGit.

Note, for Netbeans, you install NBGit as a version control plugin. NBGit also calls JGit.

JavaGit: not actively maintained?

Solution 6 - Java

JGit is the Java implementation of Git. It is a library, that also can be used in your own applications. It also provides some sort of CLI operations. EGit on the other side is the Eclipse team provider plugin for Git, which uses JGit as Git implementation. Simplified you could say EGit is the UI part, and JGit the background part. JGit doesn't depend on EGit, but EGit does depend on JGit.

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJus12View Question on Stackoverflow
Solution 1 - JavaVonCView Answer on Stackoverflow
Solution 2 - JavaChris AniszczykView Answer on Stackoverflow
Solution 3 - JavaRobertView Answer on Stackoverflow
Solution 4 - JavaMatthias SohnView Answer on Stackoverflow
Solution 5 - JavalinquizeView Answer on Stackoverflow
Solution 6 - JavachammuView Answer on Stackoverflow