让我们进行一次平衡的比较,基于这样一个前提,即在您的情况下,您可能不需要任何高级功能。
比较:
存储:
1.文件系统布局:SVN需要两个东西,一个工作目录和一个仓库,以便处理您的数据。这不仅会导致元数据不必要的重复,而且使事情稍微更加难以处理。Git和Mercurial都可以将完整的历史记录保存在工作目录中(每个工作目录都是完整的仓库)。如果您不打算在服务器上检查文件的副本,则这并不太相关(但它比那更复杂,因此请记住,在其他情况下,这整个项目符号可能根本不适用)。
2.工作目录混乱:SVN在您的存储库的每个子目录中添加了“.svn”子目录;Git和Mercurial只在顶层添加了单个“.git” / “.hg”目录。
3.空间消耗:Git和Mercurial使用的存储机制往往比SVN的效率高得多。 Git的缺点是必须定期优化存储库(如果您没有非常大的文件,则通常很快);我不知道Mercurial是否需要这样做,但我怀疑它不需要。
结论:我推荐Git或Mercurial。
功能:
由于您可能甚至不需要Git / Mercurial更好的合并功能,因此我不认为这是决定性因素。如果您计划同时处理多组更改,则情况就不同了;在那种情况下,Git / Mercurial可能会让您的工作更加轻松。
速度:
Git和Mercurial比SVN快得多,特别是因为它们的设计允许在本地执行许多操作。
1.查看旧内容:在SVN中查看更改历史意味着SVN必须连接到远程存储库并查看那里;在(例如)Git中,通常在SVN建立该连接之前就会显示历史记录。
2.依赖操作系统:Git的许多优化仅适用于Linux;在Windows上,您可能会遇到更差的性能。其他竞争对手可能也存在相同的问题,但程度较轻,我不知道。
3.传输:在几乎任何情况下,Git和Mercurial比SVN更快地发送和接收新更改。
结论:如果您喜欢快速处理事务,则应选择Git和Mercurial。在Windows上,Mercurial可能是更好的选择,但如果您想确保,请参考/执行实际基准测试。
DVCS:
Git和Mercurial允许开发人员继续处理他们的事情,并将它们组织成一组合理的提交,即使他们当前没有连接到您的网络。在SVN中,提交只能在它们同时出现在服务器上时进行,因此SVN用户倾向于使用更加庞大(因此更难理解)的提交。至少Git甚至有一个工具可以快速查找引入错误的提交,使用二进制搜索。同样,SVN在这里可能不如其他工具。
复杂性
我非常喜欢Git,我很容易同意Git不是最用户友好的版本控制系统,至少如果您不了解其设计的话。对于更高级的用例,我认为工具链可以弥补这一点;在您的情况下,除非您期望将来使用相同的VCS进行更复杂的项目,否则您可能更喜欢Mercurial或SVN。
工具、界面
我不太了解Mercurial,所以我对它存在哪些接口不是很熟悉。实际上,我也不使用任何花哨的Git接口,但我相信所有竞争者都有足够的工具允许基本使用,即针对不喜欢命令行的人。但是,在向团队介绍任何特定内容之前,我强烈建议您进行一些小测试。
您的问题
不同系统的存储库结构往往不同。在SVN中,可以在同一个存储库中拥有大量项目;Git和Mercurial强烈建议每个项目使用一个存储库。对于共享代码,Git至少有三个工具(其中两个是第三方)用于使用外部存储库,Mercurial可能也有类似的工具。我知道SVN也有这样的东西。
如果您将它们作为单独的存储库管理,那么我可能会推荐Git或Mercurial,因为正如前面所说,它们 tend to have less overhead per repository.
在服务器上安装Git / Mercurial / SVN可能很容易,如果您使用任何较大的Linux发行版,则几乎肯定有现成的软件包可用。如果您预计需要管理具有不同每用户访问控制的多个存储库,则有一个名为gitolite的Git管理系统非常好用。没有像这样的东西,管理多个存储库可能有点麻烦。
git gc
过程中),并且与 SVN 不同,这些增量甚至可以重用其他文件中的内容。 - Jan Krüger