Git vs Mercurial vs SVN

可能重复:
对于家庭项目,Mercurial或Git(或其他DVCS)比Subversion提供更多优势吗?
Git,Mercurial和Bazaar的相对优势和劣势是什么?

这些源代码pipe理系统有什么区别? 哪一个是最好的一个小2人项目?

SVN不同于Git和Mercurial,因为它是所有用户必须提交和提交的单个存储库。

Git和Mercurial有一个分布式模型。 这意味着每台计算机上都有一个存储库,并且通常有一个“官方”存储库,用户可以select将其更改和撤消。

Git和Mercurial非常相似。 我更喜欢Mercurial,因为我发现它更容易使用。 对于一个2人的团队,我会推荐Mercurial,但这只是我的看法。 如果你不熟悉版本控制,那么你仍然需要花时间学习使用任何选项,但是Mercurial对我来说似乎是最简单的。

要启动Mercurial存储库,您只需打开一个shell并cd到要进行版本控制的目录中,然后键入hg init 。 这创build了存储库。 要将文件夹中的所有内容添加到存储库,请键入hg add . 。 这里有一些其他的各种命令:

  • 提交本地更改: hg commit -m "Descriptions of changes"
  • 从服务器hg pull最新版本: hg pull
  • 推动本地变化: hg push

首先,我们使用的是他们写的语言。我对Git和Mercurial的经验非常相似,但是我知道如果我想调整Mercurial,我可以这样做,因为它是用Python编写的。 Git至less有点C,我不太熟悉。

Git和Mercurial就是所谓的分布式。 每一个副本都是平等的,他们可以在特定的基础上推拉(使用那个术语)相互之间的变化。 另一方面,Subversion由一个中央资源库组成,每个工作副本都是该中央服务器的一个从属服务器,在这个服务器上进行推送和提交(在这种情况下是提交和更新)。

为几个人安装Git或Mercurial包括让SSH访问同一台服务器并安装一些软件包。 而对于SVN,据我所知你需要在Apache下configuration和运行一个实际的服务器应用程序,然后混淆SSL证书和.htaccess等来保护它。

对于我所有的个人项目,我都使用Mercurial或Git。 如果我正在和一个庞大的团队合作,那么我可能会去Subversion,因为你得到了集中的authentication和托pipe。 但是对于两个人来说,我会select一个分布式的,因为那样你就不必担心集中式身份validation和托pipe。 🙂

Git和Mercurial是非常相似的(但不同的值得注意)。 另一方面,SVN则有很大的不同:前两者是分布式VCS,所以它们不需要中央服务器,而SVN则是这样。 一般而言,许多项目正在向分布式系统发展。

对于你的小项目来说,使用Git或Mercurial可能会更好。 你select哪一个本质上是一个品味的问题,虽然我更喜欢Git(而且更熟悉它)。 您根本不需要设置服务器:您可以通过SSH推送/更改更改,甚至可以通过电子邮件将补丁发送给对方(这可以直接从VCS完成,但有点麻烦)。 你可以随时build立一个中央服务器,所有的改变都会在那里。 你可以使用例如GitHub或Gitorious来承载你的项目(如果你正在使用Git,我不知道Mercurial)。