2009-05-19 33 views
7

有人能告诉我在Subversion上Git和Mercurial的炒作是什么?简而言之,git和mercurial对颠覆有什么好处?

+2

dupe of http:// stackoverflow。com/questions/871/why-is-git-other-subversion – 2009-05-19 22:00:24

+1

与集中式版本控制相比,可能会重写问题和标题以讨论分布式版本控制。 – Kekoa 2009-05-19 22:09:32

+0

@kekoav:类似于这个问题:http://stackoverflow.com/questions/26845/do-you-use-distributed-version-control – 2009-05-19 22:14:20

回答

4

Git和Mercurial是distributed,SVN不是。

优点还是不是?您决定...

5

可以在http://whygitisbetterthanx.com/处找到与各种源控制系统的比较。我最喜欢的git是:

  • 它更快。
  • 它不像SVN在.svn子目录中那样复制源代码。
  • 它允许提交脱机然后推送。
+0

中间的一个真的让我对Subversion感到困惑 - 所有该死的.svn目录在路上! – 2009-05-19 22:01:31

3

这并不比其他方面更好,它是GIT,Mercurial等允许您使用与Subversion或CVS不同的方式工作。 Subversion和CVS只提供一个集中的存储库结构,而其他的则是“分布式”的。分布式方法使开发人员之间的临时协作变得更加容易,并且还可能会影响您在自己的计算机上如何管理更改组。

哪种方法最适合你是你或你的组织需要决定的事情。

3

对我来说,一个重要的事情:SVN真的不支持标签:

  1. 标签不是象征性的。它们是回购路径(COW副本)
  2. 在SVN中,文件属于标签(因为标签是文件的副本)。在其他系统和人类直觉中:标签属于一个文件。这是相反的关系。
  3. 因此很难列出类似这样的内容:“文件中的所有标签”。这些信息并不是直接存储在SVN仓库中。
6

就Git而言,我认为有很多,其中最大的(在我看来)是Git的高级分支和合并支持。 Git使它真的非常容易分支,它在合并变化方面的能力远远优于SVN。诸如gitk之类的工具也使得它真的很容易可视化Git仓库中分支之间的关系。

还有很多其他的好处。我认为Git拥有更好的工具和更好的工具链,事实上它不需要中央库回购“检出”回购很好,当你在自己的小项目工作。不过,我认为合并和分支是最大的好处。

(很多是去了水银,还有,尽管我从来不喜欢Mercurial的本地克隆强调的“分支”。我更喜欢保持所有分支在同一回购Git的方法)

2

你有相同的范围的Git和SVN之间的“差异”比Git and CleaCase
(see my post on those "VCS core concepts")
之间

  • SVN:线性中央 VCS,下分支和标签是相同的(一个线性的历史点)。
  • GIT中:DAGDirected Acyclic Graph分布式 VCS,其中所述图的每一个路径的一个分支,每个工作空间是完整的存储库。

由于Git是内容为导向的,它会更有效地合并超过颠覆:

  • 找到非常快的图形中的哪些需要合并
  • 应用正确的补丁
1

对我来说,svn工作正常。根据经验为1至10名开发人员开发。

很明显,“真正的”版本位于冗余主机上的云中(希望某个地方照顾您的数据和正常运行时间)。它看起来像读git的是它更复杂,更大,更有能力。所以如果你想要一个'svn集中式'的工作流程(见http://whygitisbetterthanx.com/网站),用更少的方法来做事情等,然后使用svn。

我用CVS,直到很明显,所有的乐趣在哪里。我想在几年后,如果我再次改变,它会是混帐?但是真的 - 如果你在你设置它的那一天的任何一天花时间在你的版本控制系统上,那么你做错了什么。

4

假设你有个人项目,你会把它放在版本控制之下吗? (我希望你说是)。

如果是这样,那么,你会不会宁愿简单一些? Git不需要你设置服务器或类似的东西。你的工作目录是你的存储库。

想尝试一些新的疯狂的想法?只需在该分支进行分支和实验即可。如果成功,请返回主分支并合并。如果你的想法工作得不好,只需回到主分支并删除那个crazy_idea分支。

想要在crazy_idea上工作,还要继续正常开发master分支吗?同样,没问题,你可以在分支之间来回切换,只有在足够成熟后合并crazy_idea。

即使你在团队中,每个开发人员(或一小组开发人员)都可以在实验分支中处理一些想法,然后将其合并到其余代码中。

我想这会让开源更容易。您无需为任何人授予访问权限。如果某人执行了一个很棒的功能,他可以要求你从他那里拉出来。如果你喜欢你所看到的,你可以合并它。

这是一个惊喜:git比svn简单得多。

真的。我一直听说版本控制,但从来没有这样做过。当我试图把我的代码放在本地的svn服务器上的时候,这真是一场噩梦;我真的很讨厌它。

现在,我把所有东西都放在git下。

1

他们在概念上将修订组织为可以让您轻松分支/合并代码的变更集。合并SVN中的一个分支是一个极其痛苦的体验。