在JavaGit,JGit和EGit之间进行选择时的困惑


82

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

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

我不使用Eclipse,也不打算这样做,所以我真的不太在意“ Eclipse集成”。

JGit是否以某种方式连接到Eclipse?(它托管在www.eclipse.org上,JGit的文档中也包含很多“ eclipse”关键字)

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

我希望使用独立的Git库(即,不依赖于本地Git安装)

编辑:另一个问题:

编辑:我找到了答案-可以(尚未尝试过)。它transport在一个类的包中BundleWriter

Answers:


56

您可以将JGit用作独立库,但是,如JGit主页中所述

可以在以下位置找到JGit:
* EGit,Git的Eclipse团队提供者

从这个意义上讲,JGit连接到Eclipse的原因在于EGit使用JGit功能来开发Eclipse Git插件。
考虑到所有的Eclipse项目现在都在Git仓库(而不是以前的CVS仓库)中进行了版本控制,因此我将JGit用于您的Java项目,因为看起来:

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

ThorbjørnRavn Andersen评论:

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

Eclipse项目从CVS到Git的迁移正在进行中,并已在此处报道(Chris Aniszczyk)。

我已经在几个项目的开发列表中监视了有关将项目代码从CVS迁移到Git的对话。
似乎大多数开发人员都了解迁移的价值主张,尽管他们担心迁移会带来很多新的学习内容,因为他们想出了在新环境中如何说出富有成效的方法。

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

正式的错误表明Eclipse承诺为Git存储库上的所有Eclipse项目提供“足够的工具支持”是Bug 293192

为了使用git来弃用旧的VCS(错误270854),应该有足够的工具。创建此错误是为了跟踪该错误。
[...]我打开/链接了相关的EGit错误,以便更好地查看/跟踪丢失的内容。

因此,Egit是该错误中引用的唯一项目,该项目为为所有Eclipse项目选择的新(D)VCS提供了适当的工具支持。

错误270854是关于废弃旧的VCS工具,该工具实质上包括CVS。)


刚上映(2001年3月17日):Eclipse上的Git状态-2011年初Chris Aniszczyk):

我很高兴,自去年以来,根据Eclipse Marketplace的统计数据和项目收到的社区贡献,事情已经取得了很大进展。

EGit安装率

下一个是什么?在工具方面,我们正在接近1.0版本(计划用于Indigo版本)。
如今,Eclipse上的git工具要好得多,如果您需要帮助或有疑问,请从最出色的EGit用户指南开始

如果您是一个eclipse.org项目,请考虑开始将项目存储库移至Git的过程。Git上已经有很多eclipse.org项目
很高兴看到所有eclipse.org项目都计划在Indigo发行版之前迁移到Git。


即使您说过Egit使用JGit,在上面还不太清楚EGit是git的Eclipse插件,它以与Eclipse已经支持CVS相同的方式提供git支持。
托尔比约恩Ravn的安徒生

所以仅仅因为它托管在eclipse.org上并不意味着它与Eclipse有关?
Jus12 2011年

@ Jus12 @Thorbjørn:我添加了一些元素来说明Egit在Eclipse项目中的作用。
VonC

我同意JavaGit已经很老了,我只是在看它以防JGit太复杂而无法使用。
2011年

1
@ Jus12:Jetty HTTP服务器现在也托管在Eclipse.org(eclipse.org/jetty)上,它与Eclipse IDE本身无关。Jetty可以单独使用,也可以嵌入到其他非Eclipse相关项目中。
PeterŠtibraný2011年

43

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

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


4

只是为了说明一下,因为我刚才偶然发现了这个问题。

Eclipse Foundation和Eclipse IDE之间是有区别的。基金会是总括组织,而IDE是通过基金会开发的项目之一。因此,要知道的重要一点是,就像Apache从Web服务器开始并分支成为一个托管许多项目的基金会一样,Eclipse Foundation现在也已经扩展到IDE中的“根”之外。

因此,在这种情况下,JGit代码为git命令提供了Java API,而EGit使用JGit为Eclipse IDE提供了git支持。

就我个人而言,我有时也会感到有些困惑,有时似乎几乎所有事情都在某种程度上降低了这些组织的关注度。但是,我还可以看到该实用程序具有一个总括组织,而不是20个类似但不同的组织。


3

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

EGit是将JGit集成到Eclipse IDE中的Git Eclipse团队提供程序,并提供从Eclipse内部与Git一起使用的UI。

同时,Eclipse社区中的很大一部分以及大量企业开发人员都在使用EGit / JGit(这就是支持这些项目的公司为此投入资金的原因)。请参阅项目页面,如果您想了解谁在做出贡献,请访问哦


0

JGit是一个用于操作git仓库的库。除非您以自己喜欢的方式编写程序来操作git仓库,否则您不会单独使用JGit。

如果将Eclipse用作IDE,则将EGit安装为版本控制插件(在Indigo中默认)。EGit会调用JGit,因此,如果您安装EGit,那么您还将安装JGit。

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

JavaGit:不积极维护吗?


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/

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.