选择JavaGit,JGit和EGit时的困惑

时间:2011-03-17 06:52:22

标签: java eclipse egit jgit

我正在创建一个使用Git的Java应用程序。我发现有一种叫做的东西 JavaGitEGitJGit

我知道JavaGit和EGit / JGit是不同的。我不明白的是EGit和JGit之间的区别。两者都托管在Eclipse项目上,但其中一个似乎与Eclipse相关,而另一个则不相关。

我不使用Eclipse而且我不打算这样做,所以我真的不太关心“Eclipse集成”。

JGit是否以某种方式连接到Eclipse? (它托管在www.eclipse.org上,而JGit的documentation里面也有很多“eclipse”关键字)

在这三个中,我需要连接我的Java程序(不是用Eclipse编写)才能使用Git存储库?

我更喜欢独立的Git库(即,不依赖于本地Git安装)

编辑:还有一个问题:

编辑:我找到了答案 - 确实如此(尚未尝试过)。它位于名为transport

的类的BundleWriter包中

6 个答案:

答案 0 :(得分:54)

您可以将JGit用作独立库,但如JGit Homepage中所述:

  

JGit可以在以下内容中找到:
  * EGit,Git的Eclipse团队提供商

从这个意义上说,JGit连接到Eclipse,因为EGit使用JGit功能来开发Eclipse Git插件。
考虑到所有Eclipse项目现在都在Git repos中进行了版本化(而不是以前的CVS repos),我会考虑将JGit用于您的Java项目,因为它似乎:

  • JavaGit已经很长时间没有更新(2008年)
  • Eclipse致力于通过EGit为Git提供良好的支持,这应该通过扩展来确保JGit的开发(由EGit使用)。

Thorbjørn Ravn Andersen评论:

  

即使你说Egit使用JGit,上面还不太清楚EGit是git的Eclipse插件,它提供git支持的方式与Eclipse中已经支持CVS的方式相同

Eclipse项目from CVS to Git is in progresshas been reported here的迁移(由Chris Aniszczyk撰写)。

  

我在几个项目的开发列表中监控了有关将项目代码从CVS迁移到Git的对话。
  看起来,大多数开发人员都理解迁移的价值主张,尽管他们担心迁移带来了大量新的学习,因为他们在新环境中找到了如何说生产力。

     

不可避免地,关于由EGit项目开发的Git团队提供者的讨论成为对话的重要部分。 “EGit准备好迎接黄金时段吗?”通常是反弹的问题

官方错误说明了Eclipse承诺提供足够的工具支持"现在Git repo上的所有Eclipse项目都是bug 293192

  

为了弃用旧的VCS而使用git(bug 270854),充分的工具   应该可用。创建此错误是为了跟踪它   [...]我打开/关联了相关的 EGit错误,以便更好地查看/跟踪   什么不见​​了。

因此,Egit是该bug中唯一一个为所有Eclipse项目选择的新(D)VCS提供足够工具支持的项目。

bug 270854是关于弃用旧的VCS工具,其中主要包括CVS。)


就在(2001年3月17日): The State of Git at Eclipse – Early 2011 Chris Aniszczyk):

  

我很高兴自去年以来,基于Eclipse Marketplace统计数据和项目所获得的社区贡献,事情已经走了很长的路。

EGit installation rate

  

接下来是什么?在工具方面,我们越来越接近我们的1.0版本(计划用于Indigo版本)   如今,Eclipse的git工具要好得多,如果您需要帮助或有疑问,请从最优秀的 EGit User Guide 开始。

     

如果您是eclipse.org项目,请考虑启动将项目存储库移至Git的过程。的 There are a lot of eclipse.org projects already on Git 即可。
  很高兴看到所有的eclipse.org项目都计划通过Indigo版本转移到Git。

答案 1 :(得分:41)

作为JGit和EGit的作者之一,对此感到抱歉。

JGit是一个EDL(新式BSD)许可,轻量级,纯Java库,实现了Git版本控制系统。它可以独立使用,并嵌入Gerrit,Eclipse,Netbeans和IntelliJ等应用程序中。 EGit嵌入JGit以使用它来处理Git存储库并从Eclipse中公开Git构造。目前,JGit不支持git-bundle命令,但欢迎您提供支持,不应该那么难,请参阅我们的贡献者指南。

答案 2 :(得分:4)

刚开始,因为我刚刚在这个问题上偶然发现了这个问题。

Eclipse Foundation和Eclipse IDE之间存在差异。基金会是伞式组织,而IDE是通过基金会开发的项目之一。因此,重要的是要知道,正如Apache从Web服务器开始并扩展成为托管多个项目的Foundation,Eclipse Foundation现在已经扩展到IDE的“根”之外。

因此,在此上下文中,JGit代码为git命令提供了Java API,而EGit使用JGit为Eclipse IDE提供git支持。

就个人而言,我有时也觉得这有点令人困惑,有时几乎看起来这么多事情在某种程度上降低了这些组织的重点;但是我也可以看到这个实用程序有一个伞式组织而不是20个相似但不同的组织。

答案 3 :(得分:3)

JGit是从头开始实现的git作为Java库而JavaGit是(是?)包装本机git实现的Java API(即它调用本机git命令行)。

EGit是将JGit集成到Eclipse IDE中的Git Eclipse Team Provider,它提供了从Eclipse内部使用Git的UI。

与此同时,Eclipse社区的大部分人以及大量的企业开发人员正在使用EGit / JGit(这就是为什么支持这些项目的公司将资金投入其中的原因)。如果您想获得一些有所贡献的见解,请参阅project pagesohloh

答案 4 :(得分:0)

JGit是一个操纵git存储库的库。除非你编写一个以你喜欢的方式操作git仓库的程序,否则不要单独使用JGit。

如果您使用Eclipse作为IDE,则将EGit安装为版本控制插件(默认为Indigo)。 EGit调用JGit,因此如果安装了EGit,也可以安装JGit。

注意,对于Netbeans,您将NBGit安装为版本控制插件。 NBGit也称为JGit。

JavaGit:没有积极维护?

答案 5 :(得分:0)

JGit是Git的Java实现。它是一个库,也可以在您自己的应用程序中使用。它还提供某种CLI操作。 另一方面,EGit是Git的Eclipse团队提供者插件,它使用JGit作为Git实现。简化你可以说EGit是UI部分,JGit是背景部分。 JGit并不依赖于EGit,但EGit确实依赖于JGit。

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