对于家庭项目,Mercurial或Git(或其他DVCS)可以提供比Subversion更多的优势吗?

时间:2009-08-02 08:55:49

标签: svn git version-control mercurial

哪个免费的源代码管理系统最适合家庭项目和文档?

我正在考虑使用Subversion(因为我熟悉它)。

家庭项目的特点:

  1. 最有可能是单身人士进行更改。 (可能是一天(不是现在),我可能与在其他城市的朋友分享项目)

  2. 我想存储其他文件(非编程文件)

  3. Mercurial或GIT(分布式版本控制系统)能否让我比家庭项目中的颠覆更具优势?

9 个答案:

答案 0 :(得分:38)

答案 1 :(得分:27)

一个明显的好处:您可以在离开服务器时进行开发。例如,您可能有一台笔记本电脑拥有自己的本地git存储库,并推送到您的服务器(或github)。现在假设你去了一个没有互联网连接的地方...在Subversion你必须做的事情没有任何提交,直到你再次连接。使用DVCS,您可以在本地提交(并恢复,分支等),然后在您回家时将这些提交恢复。

答案 2 :(得分:14)

“家庭项目”设置中git和mercurial的一个非常强大的优势是新的存储库很容易设置。在git中,您只需在代码树的根目录git init进行操作即可获得新的存储库。

然后您可以立即添加,提交,分支等。 svn设置成本较高,因为您需要一个单独的存储库位置和URL,然后才能创建工作副本并开始常规的VCS操作。

存储文档在git或mercurial中没有问题,但肯定是git(不确定hg)我会建议不要存储大型媒体文件(从100M向上),因为它在某些操作中往往表现不佳。

答案 3 :(得分:5)

我在个人项目中使用git来“与自己合作”。我在家庭网络上的Linux机器上有存储库,可以从任何地方通过隧道访问。然后我将它克隆到我的家用台式机,我的笔记本电脑,也许是工作中的机器,我可以看到它或在我去的任何地方工作。我可以提交更改,获取最新信息,并在各个地方进行备份。 git允许您切换分支的简易性和速度非常好。发现了一个bug?切换到'master',修复它,commit,push,然后切换回你正在做的事情。比cvs或颠覆更容易和更快。

另外,对于甚至不是项目的小目录,我都使用git。托管我的网站的apache服务器的config目录是git'd,同样是同一网站的tomcat config目录。

我在工作中使用它来做所有事情,即使在工作中我们正在使用CVS转向Subversion。我不使用git-cvs或git-svn,我只是使用git和任一产品,并保持我的分支本地。非常方便能够切换到另一个开发人员的最新提交,检查一下,然后切换回来。

然后,当然,对于工作或家庭项目来说,这可能是一个巨大的帮助。

此外,如果在工作中他们仍然使用穿孔卡,cvs或颠覆,那么在家使用git是保持最新状态的好方法,并找出它可能产生的影响。

我不会对技术感到兴奋,除非他们带来真正的新东西。 Git呢。我是一个粉丝。你可能已经知道了。

答案 4 :(得分:5)

除了关于hg,git,darcs,bzr和朋友的许多精彩功能的细节(没有讽刺;我是一个巨大的粉丝),必需品在这里:

  • 使用svn ,您必须选择将您的repo存储在异地并将其存储在现场。现场意味着如果您的磁盘发生故障,您的项目就是Toast。非现场意味着您无法从飞机或其他断开连接的情况下提交,并且当网络连接不良时,提交可能会很慢。

  • 使用任何分布式VCS,琐事可以创建“repo”的一个或多个“克隆”。您可以随时快速提交更改,然后在连接可用时这些更改推送到远程仓库。

git,hg和其他人加载了与svn和cvs不同的功能(和错误特征)。但这些都是必需品。

答案 5 :(得分:4)

使用dvcs可以更轻松地共享项目,因为您无需授予其他人访问中央存储库计算机的权限。你可以让他创建一个副本,如果你愿意,不允许他在任何地方做任何提交。如果你想要他的改变你可以把他们从他的电脑拉到你喜欢的地方,而不是让他推他们。这样,如果您愿意,可以先检查更改。您完全可以控制(如果需要)。

主要的好处仍然是您在笔记本电脑中携带整个存储库!当您习惯于大量的中央存储库以及随之而来的所有麻烦时,可能需要一段时间才能理解这意味着什么。当然,在许多情况下,拥有一个是有益的,但是你可以控制谁拥有它以及对它有什么样的访问权限。使用集中式vcs不允许有人直接提交到中央存储库意味着从一些不幸的草皮中获得了大量额外的工作。提交必须或多或少地用手完成,而dvcs负责检查提交的代码的sod可以以与他自己的代码相同的方式从他的计算机提交它们。

有很多方法可以在vcs中简化上述内容,但是它们仍然需要额外的维护(创建组件/视图/什么是访问控制并且只允许提交)。在git / mercurial中确实没有任何这种开销。

我想说,在公司网络之外完成的工作越多,dvcs就越有利。如果你们都可以快速访问中央存储库并且所有人都可以信任提交他们的更改,那么dvcs的主要优势就不那么重要了(虽然目前还有一些,但目前它们是IMO与可用的不良用户界面平衡)

答案 6 :(得分:3)

我不知道mercurial,但我最喜欢在git中做的事情是在颠覆中是不可能的是历史​​编辑。例如,您可以:

  1. 编辑先前的提交以更改已更改的文件列表
  2. 更改先前提交的顺序
  3. 完全删除历史记录中的提交
  4. 合并两个或多个提交
  5. 拆分提交
  6. 将后续更改附加到之前的提交
  7. 简而言之,如果你认为你应该能够做到,你可能会这样做。这一点非常强大,一旦你意识到这种能力,并且在许多方面可能比分布式优势更重要。

答案 7 :(得分:2)

我想强调Mercurial和GIT让您开始使用源代码管理而无需服务器,并在必要时使轻松移动您的存储库到另一台服务器

其他答案涵盖了其他优点。

答案 8 :(得分:1)

我曾经有一个用于家庭同步的subversion服务器。有些年头,我一直在运行git,但现在转向hg。理由主要是简单。我应该能够“掌握”git,但我仍然没有。

这是hg上的great tutorial from Joel(StackOverflow主谋之一)。