Mercurial v Git v Subversion

时间:2010-11-30 10:34:26

标签: java svn git version-control mercurial

我需要选择一个VCS嵌入我正在开发的Java应用程序中。 Java应用程序将通过API与VCS交互,但用户也将通过Eclipse插件直接与它进行交互。

已确定3个候选VCS:Mercurial,Git和Subversion。我需要根据以下标准选择一个(没有特别的顺序):

  • Java API 。这不是100%必需的,因为如果没有可用的Java API,应用程序可以通过命令行发出VCS命令。但是,显然最好使用API​​
  • Eclipse插件
  • 简单即可。使用VCS(间接通过应用程序或直接通过Eclipse)的人将是软件开发人员,但可能不是最复杂的物种。
  • 许可即可。许可证必须允许在商业应用中使用VCS(以上述方式)

我可能会忽略其他一些考虑因素,如果再考虑一下,我会更新问题。

谢谢!

2 个答案:

答案 0 :(得分:3)

  • Java API :Subversion具有Java绑定,并且在Java中有一些Mercurial的重新实现(参见开发邮件列表)。
  • Eclipse插件:有一些插件支持Eclipse的所有三个插件。
  • 简洁:Subversion可以说是一个更简单的模型集中化。 Mercurial往往比Git更容易学习和使用,而在功能上非常接近。
  • 许可:Git和Mercurial是GPLed,但您可以通过命令行调用它们,而不会产生许可。 Subversion使用Apache许可证,而不是copyleft。

现在 - 为什么不编写一个抽象差异的界面,以便你可以支持所有三个? Mercurial和Git非常相似,因此至少支持这两者应该相对简单。

答案 1 :(得分:0)

首先,除非您的应用程序具有与集中式VCS特别有效的工作流程,否则我将删除Subversion。即便如此,我也会尝试使用Mercurial或git,因为svn速度太慢了。

关于Mercurial(hg)vs Git,我个人会选择git。一方面,hg更简单,更直观,但git 很多更快,并且比hg有更多的思想共享。

可写性可能是一个问题。 Git实际上是从Unix shell编写的(尽管它将在安装了一些gnu软件的Windows上运行)。 Hg有一个python接口,但如果我没记错,有一些C扩展可能会让它无法与jython一起使用。也就是说,看起来 是Java的第三方git库:http://eclipse.org/jgit/

关于许可,hg和git都是GPL,但如果你向他们发出不应该是问题的话。 SVN使用Apache许可证,所以它可能在这方面获胜(基本上,你可以随心所欲地做任何事情)。