版本控制系统(RCS)的选择与比较

为啥考虑选择一个版本控制系统呢?由来已久。其实说到版本控制系统,工作的时候顺从公司的安排,一直用的是 VSS ,家里面以前常常使用 VS ,顺面也用上了 VSS ,但是到了后来, VSS 明显不行了,当做 Linux 的工程, Python 工程,或者 Eclipse 中的工程时, VSS 都不太胜任工作,早就想换一个到处能使的版本控制系统了。另外,工作以外其实陆陆续续写了很多代码,在博客上发布的时候常常是用复制粘贴这样的方式,以前也曾经将一些重要的工程打包,放到 google groups 上去,但是实在是太过麻烦,要方便的话,还是在网站找个项目托管,将所有的代码直接提交,供大家去取的方式最好,顺面将自己的工作之外的代码编写方式统一,也更好组织工程的目录结构。在重装电脑的时候也省事,不用将 N 大的东西考来考去还怕丢失。在自己家的服务器,台式机,笔记本 3 者间倒腾代码也更加方便。

       谈谈目前流行的 RCS 的选择,基本上现在还在用的版本控制系统分为 3 种,一种以 VSS(Visual Source Safe) 为代表,在局域网内使用,第二种以 CVS( Concurrent Versions System ) SVN(Subversion) 为代表在互联网上使用,第三种以 Mercurial,Git 为代表,以分布式方式使用,(对应的, CVS,SVN 的使用方式将所有的内容都集中在一台服务器上,被称作集中式)可以在互联网上使用,但是本机也有代码仓库,可以本地提交代码。基本上,将这三种依次的分为 3 代也未尝不可。

       Wiki 上有个网页很详细的列出了众多流行的 RCS 极其功能比较,《 Comparison of revision control software 》,建议所有在众多的 RCS 软件中看的眼花缭乱的人去看看(也许看过后更加乱了)。总而言之我得出的结论是 Mercurial > SVN > CVS > VSS

       谈谈选择,选择的目的就是在广泛的方位内使用版本控制系统,抛弃 VSS 本来就是选择的目的,这里就不多说了。

       CVS 实在算是老牌的版本控制系统了,当年整个开源世界都是靠 CVS 过来的。但是 SVN CVS 开发者特意针对 SVN 缺点开发的产品,出来以后,整个开源世界都换了颜色。。。。典型的就是 Source Forge ,这个最大的开源站点都换了 SVN 后,还有什么理由使用 CVS 呢? Google Project Host 出来的较晚,一开始就是使用 SVN 。另外, SVN CVS 强大的地方除了上面的 WIKI 文章,还可以参考本文最后的中文补充材料。 SVN 替代 CVS 的趋势是不可逆转的,抛弃 CVS

       现在就剩下 SVN,Mercurial,Git 了,其实 SVN 已经足够强大了,这点毋庸置疑,但是为什么我们还需要分布式呢?( Mercurial,Git 的代码管理方式)个人工作时的经历,使我决定使用最新的特性。 SVN 的代码提交必须首先要能联网,这也是开源时,不同的开发者在不懂的地方决定的,分布式的好处就是本地也有代码仓库,这样即使没有联网也可以本地提交代码,然后等待联网时再去 Merge , 当然,这是简单的说明,最大的好处在于,本地也能有一套完整的版本控制系统,在代码没有提交到正式的代码仓库前享受版本控制的好处,这点的好处非常多。举 两个最常见的例子,其一就是一个代码量适中的工作,你没有分出版本,工作到一半的时候,很显然不能提交到正式的库里,影响大家的工作,那么中途你想尝试改 改代码,有个本地库,能让你更加的自由,其二就是工作已经完成后,但是还没有来得及测试,中途需要去完成一个更加重要的工作,此时代码提交到正式库中还是 不恰当的,假如有个本地的库的话,能够先提交,然后无论过了多久后,你再回来,你都能可靠地获取到完整的代码,以前工作的时候在 VSS 我就碰到过这样的情况,然后 1 2 天的工作就在一个自以为安全的全取上丢失了。因为上面痛苦的经历,我决定尝试使用最新的分布式版本控制系统,虽然我已经在自己的服务器上好不容易搭建了一套 SVN 服务了,虽然自己的开发机上都已经装好了 TortoiseSVN 了,虽然分布式的版本控制系统还太新,以至于还不太完善。呵呵,作为程序员,就要敢于拥抱新事物嘛。。。。。。。。又想起某句名言, IT 领域最大的特点就是喜新厌旧。。。。。。

       最后剩下的就是 Mercurial Git 之争了,在这两个 RCS 中选择还真是痛苦的选择,因为各有优势,就像当年选择一个除 MFC 以外的 GUI 库一样, Qt GTK 的选择一样痛苦。(当年最后的选择是 Qt )这里,有几篇不错的中文文章《 拥抱 Mercurial---选择分布式版本控制工具 》,《 分布式版本控制工具: git & mercurial 》,《 几个分布式 vcs比较 ( 文中的 HG 就是指 Mercurial) 对其进行了比较,具体的比较内容这里结合 WIKI 中的文章总结下:

GIT:

1.   SVN 的集成更好。
2.   GIT
是基于内容的跟踪系统,相较 Mecurial 而言,模型简单些,因此容易扩展;

3.   Linux rails 世界中应用相当广泛。( GIT 本身就是 Linus 开发的,这点是自然的,当年 CSDN C C++ 世界最大的口水战不就是因为 GIT 全部是用 C 开发,然后某个 Windows 下的 C++ 开发者提出了疑问后触发的吗。。。。。。)

4.   跨平台特性较弱。(可以理解)

5.   命令复杂。。。。。(对应的也许是功能更加强大吧)

6.   branch 建立合并功能强大,方便。

 

Mercurial

1. SVN 命令相似,学习代价更小。

2. 跨平台特性很好。

3. 使用广泛,文档很好。

 

以下是各自获得的支持列表:

Software  

Web interfaces  

Stand-alone GUIs   

Integration and/or Plug-ins for IDEs   

Git

gitweb, wit, cgit, GitHub , gitorious , Trac

gitk, git-gui ( Tcl / Tk ), tig, TortoiseGit , qgit, gitg (GNOME/GTK), (h)gct (Qt), git-cola (Qt), Git Extensions (Windows Explorer)

Eclipse ( JGit/EGit ); Netbeans ( NbGit ); Visual Studio ( Git Extensions ); Emacs ( extension for standard VC); TextMate ( Git TextMate Bundle ); Vim (VCSCommand plugin); IntelliJ IDEA >8.1 ( standard feature ); Komodo IDE ; Anjuta

Mercurial

included [63] , Bitbucket , Trac

Hgk (Tcl/Tk), (h)gct (Qt), TortoiseHg (Windows Explorer, Nautilus)

Eclipse ( Mercurial Eclipse ), NetBeans ( [50] ), Visual Studio 2008 ( [51] ), Emacs, Vim (VCSCommand plugin), Komodo IDE

比较明显的是, Git 获得的 Linux 下的支持那是非常多啊。。。。。。

最后,看的越多,越难选择,两者都是非常优秀的软件,相对来说, Git 更加强大,但是因为自己还是需要在 Windows 下做一些工作的,另外,因为想在网上找个地方托管代码, Google 支持 Mercurial 而不支持 Git ,因为这个缘故,选择 Mercurial 了。。。。。呵呵,最后的选择因为这么简单的原因。。。。。。。

       另外,对于 E 文不太好的人,提供一篇中文补充材料:

版本控制系统简介 RCS/CVS/Subversion 》向我们讲述了 CVS 的特性, SVN CVS 强大的地方 ,以及一些 SVN 的缺点。

http://blog.csdn.net/vagrxie/archive/2009/09/23/4582457.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值