我正在创建一个使用Git的Java应用程序。我发现有一种叫做的东西 JavaGit,EGit和JGit。
我知道JavaGit和EGit / JGit是不同的。我不明白的是EGit和JGit之间的区别。两者都托管在Eclipse项目上,但其中一个似乎与Eclipse相关,而另一个则不相关。
我不使用Eclipse而且我不打算这样做,所以我真的不太关心“Eclipse集成”。
JGit是否以某种方式连接到Eclipse? (它托管在www.eclipse.org上,而JGit的documentation里面也有很多“eclipse”关键字)
在这三个中,我需要连接我的Java程序(不是用Eclipse编写)才能使用Git存储库?
我更喜欢独立的Git库(即,不依赖于本地Git安装)
编辑:还有一个问题:
transport
的类的BundleWriter
包中
答案 0 :(得分:54)
您可以将JGit用作独立库,但如JGit Homepage中所述:
JGit可以在以下内容中找到:
* EGit,Git的Eclipse团队提供商
从这个意义上说,JGit连接到Eclipse,因为EGit使用JGit功能来开发Eclipse Git插件。
考虑到所有Eclipse项目现在都在Git repos中进行了版本化(而不是以前的CVS repos),我会考虑将JGit用于您的Java项目,因为它似乎:
即使你说Egit使用JGit,上面还不太清楚EGit是git的Eclipse插件,它提供git支持的方式与Eclipse中已经支持CVS的方式相同
Eclipse项目from CVS to Git is in progress和has 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统计数据和项目所获得的社区贡献,事情已经走了很长的路。
接下来是什么?在工具方面,我们越来越接近我们的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 pages和ohloh。
答案 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。