Eclipse 中的 SVN 分为两个阵营。SVN 开发了一个名为Subclipse的插件。Eclipse 人有一个名为Subversive的插件。从广义上讲,他们都做同样的事情。各自的优点和缺点是什么?
32 回答
两者非常相似,但 Subversive 是“eclipse svn 提供者”。我主要使用 Subversive 是因为有一些方便的功能:
历史分组
当我浏览分支的历史记录而不是只查看每个提交的一堆行时,它可以按今天、每周等对提交进行分组。
树干、分支和标签的映射
Subversive 采用默认的 svn 布局:trunk、branches、tags(您可以更改),因此无论何时您想要标记或分支,只需单击一下,您就可以提供标记或分支的名称。
就像我说的,这些只是我觉得方便的细微差别。两者都适用于 mylyn,但总体而言,这两个扩展并没有太大的区别。
与 Subversive 合并虽然很痛苦(没有尝试过 Subclipse),但我从未能够成功合并。合并的预览很棒,但它永远不会完成合并,或者需要很长时间。大多数时候,我通过命令行完成合并,没有任何问题。
我会尽力回答这个问题。我是 Subclipse 的项目负责人,我管理该项目的所有发布等。所以我的偏见很明显。
我不会过多地谈论 Subversive。显然,有些用户使用它并喜欢它。在功能上,这些产品非常相似,因为它们都是成熟的产品。
我确实想评论的一件事是 Subversive 是“官方 Eclipse”插件的概念。这是不正确的,因为没有这样的名称。Eclipse 是一个开源基金会,任何想要遵循其规则、流程和 IP 要求等的项目都可以在该基金会托管他们的项目。这不会使您比任何其他插件更正式或更不正式。
我还要指出,Subversive 自成立以来一直处于“孵化”阶段,在我看来,它永远不会满足毕业要求。正如您在此处看到的,该项目只有一名提交者,提交活动已减少到非常低的水平。
那么为什么要使用 Subclipse?我们积极参与 Subversion 本身。我是 Subversion PMC 的成员,帮助维护 Java 语言绑定,以便我们(以及 Subversive 等其他项目)可以使用 API。
我们直接与 Subversion 合作来定义和改进 API,并确保向 Subclipse 等客户端公开必要的功能。我们还与 Visual Studio 集成 ( AnkhSVN ) 和 TortoiseSVN 团队密切合作并合作,以确保客户端之间的用户体验相对一致。
Subclipse 仍在积极维护中,我们维护对 Eclipse 版本 3.2 到 4.2 的支持。我们一直在努力听取反馈并整合来自社区的想法。最近的 1.8.x 版本包括内部更改,这些更改极大地提高了 Eclipse 在处理大型项目时的性能(即当您真正看到它时)。
Subclipse 在合并跟踪支持等领域处于领先地位,我们与 Subversion 团队密切合作,首先在 1.5 中添加此功能,然后在后续版本中对其进行改进。我们通常是新 API 的最初消费者,并向项目提供强化该功能所需的反馈。几年前,我们还引入了图形修订图功能,成为第一个将这个长期要求的功能带给 Eclipse 用户的人。
如果人们希望在 Subclipse 中看到 Subversive 中的特定 UI 功能,我鼓励您访问我们的社区并参与我们的讨论论坛。也许其他用户分享您的观点,我们可以一起改进 UI。
Eclipse 4.2 是本文发布时的最新版本,但可以肯定的是,Subclipse 将支持所有未来的 Eclipse 版本。
对于每个新版本的 Eclipse,我都会安装 Subversive,因为它是 Eclipse 提供的标准。每次,它在识别我先前存在的项目时都会遇到问题。
所以我最终卸载了 Subversive 并安装了 Subclipse,效果非常好。我也经常在命令行和 Eclipse 中使用 SVN,Subclipse 对此没有任何问题。
读完这篇文章后,我改用 Subclipse。
http://eclipsezone.com/eclipse/forums/t77149.rhtml#92035407
如果您与 Subversion 进行了很多合并,那么您可能会更喜欢 CollabNet Desktop - Eclipse Edition。您必须在 CollabNet 上注册一个帐户才能下载,但它是免费的。它本质上是具有更好合并 UI 的 Subclipse。
我不隶属于 CollabNet。
CollabNet 已将其改进的合并客户端提供给未注册的 Subclipse 用户。在从更新站点安装 Subclipse 时,您可以通过选择 CollabNet Merge Client 功能来获得它。
我会说 Subclipse,因为我什至无法让 Subversive 工作;)
其实我觉得他们俩都很烂。在我看来,使用TortoiseSVN是一个更好的解决方案。它更加健壮并且往往工作得更好,而且我一直遇到与 Subclipse 和 Subversive 的集成问题。
他们都有非常令人发指的缺点,但我无法让 Subversive 与我从命令行签出的项目一起工作,这对我来说是一个阻碍。
我都试过了,Subclipse 和 Subversive 都很糟糕。两者都很难安装。如果您使用 Subversive,则无法使用外部 SVN 客户端。
但是,您需要在 Eclipse 中安装一个 SVN 客户端来跟踪更改,并且不破坏您的本地存储库。
我安装了Subclipse,但使用TortoiseSVN来实际执行提交/标记/分支/合并。
Subclipse,因为至少它有效。
到目前为止,颠覆性对我来说是一个失败的桶。我用 Subclipse 签出的所有旧项目都不适合它。
当然,这两个 IDE 插件都有自己的问题。但两者都不排除并行使用其他解决方案,如 TortoiseSVN 或命令行。我在工作中使用所有这三个项目。
要记住的重要一点是,您的所有客户端 SVN 软件都应该使用相同的 SVN 文件格式——这在 SVN 版本之间有所不同——否则你就是在自找麻烦。
我们发现的另一个问题是当您的客户端软件使用与服务器不同的 SVN 文件格式时。(通过文件格式,我的意思是所有信息在所有那些看似不可见的 .svn 文件中表示的方式,这些文件有效地记录了 SVN 需要了解的有关您的项目文件的内容。)这可能会造成严重破坏。1.5 服务器和 1.6 客户端之间有一个记录在案的错误,但我现在找不到链接。
由于与我们的 SVN 1.5.5 服务器不兼容,我们在运行高级 (IMO) Subclipse 1.6 插件时遇到了问题。所以我们恢复到颠覆性。它工作得很好,虽然速度很慢而且有些错误(但正在改进)。不过,当我们的服务器更新时,我们将切换到 Subclipse。是的,我们使用 TortoiseSVN 检查我们的项目并将它们导入 Eclipse(它更快)。
我们发现,正如其他发帖者所说,如果我们运行更新版本的 TortoiseSVN 以 1.6.x 格式编写文件,它将无法正常工作,但是当我们恢复到 TortoiseSVN 1.5.x 时,它工作得很好。命令行客户端也是如此(我们在Ant任务中使用它)。
如果您使用svn+ssh作为访问存储库的协议,我强烈建议您选择 Subclipse:Subversive 不够智能,无法正确记住您的凭据,并且每次更新工作副本时都会提示您输入用户名和私钥,并且对于您可能已经设置的每个 svn-external。
“记住凭据”选项在这种情况下被破坏,并且自 Subversive 首次公开发布以来一直存在。
我选择使用 Subclipse,因为它与 Subversion 项目最密切相关,因此更有可能更好地处理核心 SVN 功能。如果它根本无法执行任何功能,那么我有 TortoiseSVN 作为备份。
只是一个更新。我最近正在重新安装 Eclipse,并面临选择 Subclipse 与 Subversive 的问题。我也遇到了让 Subversive 工作的麻烦,所以我选择了 Subclipse。
它完美地安装在我的 Linux 64 位机器上并且运行良好。我将最常见的功能(如更新、提交、..)映射到快捷方式,这真是太棒了。合并也很好,尽管对于更大的合并我仍然求助于 TortoiseSVN。我用 3.5 和 3.6 都试过了,它们都工作得很好。我最终使用了 3.5,因为出于某种原因,键绑定不适用于 3.6。
如果您在公司中使用其中之一,甚至可能希望将它们捆绑在自己的基于 Eclipse 的产品中,那么使用 Subclipse 会更轻松,因为它在商业友好的 Eclipse Public License 下可用。
另一方面,颠覆性需要所谓的连接器才能充分发挥作用。那些有单独和不同的许可证。因此,您最终可能会为 Subversive 功能获得两个或三个不同的许可证,而所有其他Eclipse 插件都在那个 EPL 下。这也是这些连接器不在 eclipse.org 上托管的原因。
这就是为什么在 Subversive 安装后动态下载它们的原因(这也意味着简单地镜像 eclipse.org 更新站点并不能在您的公司网络中为您提供可用的 Subversive 离线安装)。
直到大约 2008 年 5 月,我一直在使用 Subclipse,但由于某些项目的问题,我已经切换到 Subversive,并且使用它没有任何问题。如果您正在做一些花哨的事情,比如无头Buckminster构建,那么 Subversive 绝对是您的最佳选择。
如果您使用 TortoiseSVN 并定期更新版本,您可能会发现带有 Subversive 的 Eclipse 会丢失所有 SVN 信息并抛出一些可怕的错误。
原因是新版本的 TortoiseSVN 添加了 Eclipse Subversive 无法理解的新元数据,除非您也保持 Eclipse SVN 连接器是最新的。
我通常使用 SVNKit 连接器,因此 TortoiseSVN 1.5.x 将与 Eclipse SVNKit 连接器 1.5.x 一起使用,而 TortoiseSVN 1.6.x 将与 Eclipse SVNKit 连接器 1.6.x 一起使用。
Subversive比Subclipse具有更多优势,如下所示。但是只有一个 Subversion 没有的特性对使用分支如此重要。所以我们必须使用Subclipse。
颠覆性优势:
- 视图和图标提供更多信息
- 刷新提交同步项后,提交的文件将关闭。
子剪辑优势
- 比较两个分支的能力
对我来说,没有好坏之分,但 Subversive 是 Eclipse Ganymede 平台中的默认 SVN 插件,因此它有可能更好地与 Eclipse 集成。
作为 Brendon 的补充回答:
我们从 1.5.1 版本开始使用 Subversion,并首先使用 Subclipse。但是因为我们非常依赖合并功能,所以我们切换到了更方便的 Subversive,并且在合并对话框中有一个单独的 Reintegrate 选项。
一个可能阻碍合并的错误是,如果您明确选择修订,则不会采用列出的最后一个修订。例如,“101-100”不会合并 r100 和“100”,因此根本不会合并任何东西。(版本 0.7.5)
它使用与 CVS 插件相同的指标。
虽然我都使用 Helios,但我对 Subclipse 有一点偏好,因为它对bugtraq
属性的出色支持(详情请点击此处)。
History视图显示一个单独的列(标题为,bugtraq:label
显示BUGID
s),上下文菜单有一个专门的“打开 Bug URL”操作(链接到bugtraq:url
)——我不知道如何使用 Subversive 访问这些信息。
我都用过,虽然 Subclipse 对我来说很不稳定,但当我的同事不小心输入了错误的凭据时,Subversive(至少在以前的版本中)锁定了他的帐户(网络登录用于访问 subversion 存储库)。
随着时间的推移,Subclipse 往往会变得杂乱无章。如果 Eclipse 没有定期刷新,Subclipse 似乎会丢失其文件跟踪信息。不过,老实说,因为我有Easy Explorer Plugin,所以我(偶尔)使用 Subversive 来获取历史和更改信息,但我很容易探索和使用 TortoiseSVN 来提交和更新我知道我最近更改过的项目。
自从升级到 Ganymede 后,我一直在使用 Subversive。我在 Linux(Ubuntu 和 Fedora Core)、Windows XP 和 Mac OS X.5 中将它与 Eclipse 一起使用。除了让 Subversion 1.5.1 在 Mac OS 下使用正确的安全库的一些问题之外,我没有遇到任何问题。鉴于它已被用作 Eclipse 技术项目,我倾向于将赌注押在它上面,以期长远。
我还没有真正使用过它,但似乎 Subversive 支持“ Check Out As ”,就像内置的 CVS 支持一样。
就像,要从 SVN 获取一个项目并能够将其作为 Web 项目运行,也许可以一口气完成。但是为了在 Subclipse 中获得相同的结果,我只需查看源代码并运行:
mvn eclipse:eclipse -Dwtpversion=2.0
我刚刚发现我无法弄清楚如何使用 Subclipse 查看属性差异。在 Subversive 中,您在历史视图中选择两个修订,右键单击并从弹出窗口中选择比较属性。这足以让我坚持使用 Subversive。
尝试切换的原因是 Subversive 在 OS X 上的奇怪行为:在每次 'svn update' 运行后,一些称为 'svn cache update' 的自动操作会以异常水平占用 CPU,总是需要很长时间才能完成。
FWIW,我们使用的是旧版本的 SVN 服务器(1.4 左右),我似乎记得有一次对 Subclipse 的更新破坏了向后兼容性,其要点是“没有人应该使用这么旧的版本无论如何,SVN”。
Subversive 是唯一一个似乎能够处理旧版本的版本。不记得细节了,抱歉。
我们在团队中都尝试过。
由于 Subclipse(来自 Galileo/Helios 的那个)在通过 VAS 验证我们的 SVN 服务器时遇到了一些问题,所以我们在其他地方没有问题,即 TortoiseSVN 客户端、浏览器(Internet Explorer 7 除外)。
所以我们安装Subversive
了,问题就解决了。
Subclipse 相对于 Subversive 的优势......它确实有效!
很久以前,我在为依赖于 Subclipse 的 Eclipse 开发协作插件时使用了 Subclipse。插件的 Subclipse 部分从来都不是问题,虽然整个Ant的东西仍然让我有点困惑,但好的部分是你不必了解 Ant 部分是如何工作的就知道如何使用它。
我今天尝试安装 PDT(这是另一个博客),然后是 Subversive,因为和许多人一样,它被描述为“Eclipse SVN 插件”。我无法一次安装四个连接器,所以我不得不一次安装一个,一次尝试一个,一次一个,它无法通过 SVN 服务器进行身份验证。
我正在尝试 PDT 和 Subversive,因为我想节省时间,而不是将更多时间花在插件的不同问题上。
我卸载了 Subversive,安装了 Subclipse,然后就这样连接了。
节省时间和麻烦,从一开始就使用 Subclipse。
我也两个都用过。我的工作区有大约 150 个项目,当我选择所有插件并说“同步存储库”时,Subversive 会花费很长时间。UI 会冻结很长时间。我发现 Subclipse 更稳定。
无论如何,我结合了很多工具。对于一些任务,比如检查整个分支,我更喜欢命令行。对于其他人,我使用TortoiseSVN。我主要使用 Subclipse 来查看历史记录并直接在工具上运行比较,偶尔进行比较(不过,我更喜欢Beyond Compare)。
我和其他人遇到了同样的问题,甚至让 Subversive 工作,所以我不能说它是否比 Subclipse 更好。
在与 Eclipse 集成标签和分支时,Subclipse 确实缺乏。你可以做到,但它远没有 CVS 那样无缝。
如果您使用 Zend Studio 9,Zend 的 Eclipse 实现,我建议使用 Subclipse 而不是 Zend Studio 附带的默认 Subversive。
我在 Zend 论坛上发布了 Subversive 和 Zend Studio 9 的问题以及我使用 Subclipse 的解决方案。