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