我需要选择一个VCS嵌入我正在开发的Java应用程序中。 Java应用程序将通过API与VCS交互,但用户也将通过Eclipse插件直接与它进行交互。
已确定3个候选VCS:Mercurial,Git和Subversion。我需要根据以下标准选择一个(没有特别的顺序):
我可能会忽略其他一些考虑因素,如果再考虑一下,我会更新问题。
谢谢!
答案 0 :(得分:3)
现在 - 为什么不编写一个抽象差异的界面,以便你可以支持所有三个? 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许可证,所以它可能在这方面获胜(基本上,你可以随心所欲地做任何事情)。