
之前,我一直用SVN作为日常的版本控制工具,很多代码和文档,都放在SVN版本库中。但是在家里用的时候总是很难保证有一台server一直开机,在我的破笔记本上开server又太耗资源,所以用久了以后总觉得提交代买和查看版本历史都很不方便(还有SVN那讨厌的无处不在的.svn目录)。前阵子在Google Doce的blog上看到Google Code开始向受邀用户提供Mercurial版本控制Hosting服务以后,我也花了点时间来学习了一下分布式版本控制系统。
分布式版本控制 (DVCS) 是一种不需要中心服务器的管理文件版本的方法(它也可以使用中心服务器)。更改可以被合并到 DVCS 的任何其他用户的系统中,因此可以实现非常灵活的工作流。它的两个主要优点是:比集中的版本控制更灵活,因为它除了支持传统的(集中式)工作流,还支持其他各种工作流;它比集中式服务器快得多,因为大多数操作在客户机本地进行,而不需要网络操作。 对于分布式版本控制的理解,大家可以参考Better Explained的文章Intro to Distributed Version Control (Illustrated)。
当前比较流行的开源分布式版本控制系统有:Git、 Mercurial、 Bazaar和Darcs等,Git是Linux之父Linus Torvalds的力作,使用在Linux内核开发中,其他的几个也都是颇有来头,所以我应该选择谁来作为分布式版本控制的开始呢?因为对DVCS实在了解不多,只好从简单的入手,正好Mercurial的命令和之前比较熟悉的SVN接近,有TortoiseHg这样的图形化工具可用,而且Google的分析也显示它的性能不错。详细的分析,请看Analysis of Git and Mercurial 。更让我觉得这个选择没错的是刚刚过去的开发者大会期间,Google宣布Google Code开始正式支持Mercurial了。
Mercurial的文档工作做得不错,官方的wiki中可以找到不少的参考资料,从基本的安装、命令使用到对分布式版本控制的理解都以及和其他CMS在理念上的异同都可以找到,其中最有名的自然要属Bryan O’Sullivan的Mercurial: The Definitive Guide了(简称HGBook),本书将在今年由O’Reilly正式出版。值得注意的是,Bryan O’Sullivan在写作的过程中把完整的DocBook源文件放在了Mercurial版本库中供大家下载,我们可以拿到source以后进行修改,然后把修改的建议发给作者。i18n-zh有计划翻译Mercurial: The Definitive Guide,有兴趣的话可以去看看HGBook中文版的Mercurial仓库。
我也是分布式版本控制的初学者,下面还是给出一些不错的资源给大家,一起学习吧。
胡凯,为什么我们要放弃Subversion
风云,分布式的版本控制工具
猛禽,分布式版本控制(一) 分布式版本控制(二)
Sparkle,我与Mercurial 系列等几篇文章
yijibong好文章,谢谢share:-)
评论 by Jawf — 2009-06-09 @ 17:16
呵呵,貌似我们的项目都是用SVN
评论 by newcoin — 2009-06-09 @ 21:39
@newcoin
集中式的开发中SVN比较适合,所以公司里还是用得比较多
不过要说集中式的版本控制,我还是喜欢P4,比SVN好用很多(商业的不好用谁买)
趋势上是越来越多的开源项目转向DVCS,现在已经有Mozilla、Python这几个大的开源社区转移过去了
评论 by William Hua — 2009-06-09 @ 22:38