84

我正在制作一个使用 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

4

6 回答 6

58

您可以将 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ørn Ravn Andersen评论:

尽管您说 Egit 使用 JGit,但在上面并不太清楚 EGit 是 git 的 Eclipse 插件,它提供 git 支持的方式与 Eclipse 中已经支持 CVS 的方式相同

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

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

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

官方错误说明了 Eclipse 承诺为现在 Git repo 上的所有 Eclipse 项目提供“充分的工具支持”是错误 293192

为了弃用旧的 VCS 以支持 git(错误 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。

于 2011-03-17T07:09:52.240 回答
45

作为 JGit 和 EGit 的作者之一,很抱歉造成混淆。

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

于 2011-07-21T15:34:09.207 回答
4

只是插话,因为我刚刚偶然发现了这个问题。

Eclipse Foundation 和 Eclipse IDE 之间是有区别的。基金会是伞形组织,而 IDE 是通过基金会开发的项目之一。因此,需要了解的重要一点是,正如 Apache 从 Web 服务器开始并扩展为托管许多项目的基金会一样,Eclipse 基金会现在已经扩展到其在 IDE 中的“根”之外。

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

就个人而言,我有时也觉得这有点令人困惑,有时似乎有这么多事情在某些方面降低了这些组织的关注度;但是,我也可以看到拥有一个伞式组织而不是 20 个类似但不同的组织的效用。

于 2011-03-28T18:58:21.763 回答
3

JGit 是作为 Java 库从头开始实现的 git,而 JavaGit 是(曾经是?)一个包装原生 git 实现的 Java API(即它调用原生 git 命令行)。

EGit 是将 JGit 集成到 Eclipse IDE 中的 Git Eclipse Team Provider,并提供 UI 以从 Eclipse 内部与 Git 一起工作。

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

于 2012-09-01T08:57:52.030 回答
0

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

如果使用 Eclipse 作为 IDE,则将 EGit 安装为版本控制插件(在 Indigo 中默认设置)。EGit 调用 JGit,所以如果你安装了 EGit,你也安装了 JGit。

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

JavaGit:没有积极维护?

于 2012-08-26T14:51:29.783 回答
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/

于 2016-11-18T04:26:34.790 回答