标题: Mercurial [打印本页] 作者: hechengjin 时间: 2016-2-18 12:49 标题: Mercurial 版本控制系统(Version Control System / Revision Control System,或者叫做源码控制系统Source Control System,以下简称VCS),是软件开发人员最常用的工具之一,由于VCS是如此常用,所以花一些时间去了解它是有必要的。
分布式版本控制系统(Distributed Version Control System,DVCS),是相对于集中式版本控制系统(Centralized Version Control System,CVCS)而言的,比如,使用人数最多的SVN、VSS就是典型的CVCS。如果你曾经用过SVN或VSS,就可以很容易理解什么叫做“Centralized” 。CVCS,是指只有一份数据仓库存放在一台服务器上,所有客户端都连接到这台服务器以读写数据仓库的工作模型。而DVCS模型则不然,每一台终端都有一份完整的数据仓库,所有终端之间都是平等的,并不存在唯一的一台“服务器”。所有的终端之间,可以自由地交换数据。
DVCS可以很容易地模拟CVCS的工作方式,只要指定任意一台终端作为服务器,规定所有人都将更改推送到这台服务器,并且所有人也都从这台服务器获取更新即可。而与CVCS相比,DVCS则有以下优点:
a) 更加安全的代码管理。
在SVN中,每次提交都意味着正式的代码被更改,别人可以立即看到此次提交,并且可能直接影响到正在运行的系统(可能会有人立即将此更新拷贝到服务器),这导致一系列的问题。首先一个问题是,有人可能会无意中提交错误的、不可靠的代码。其次,这导致程序员不敢轻易签入更改,当程序进行一项耗时很久,大量修改的工作时,所有的修改都是没有经过VCS保护的,这是非常危险的,也不符合使用VCS的初衷。
b) 摆脱网络的束缚,随时进行完整的工作。
在SVN中,由于中央仓库只有一个,所以任何需要与仓库沟通的动作(例如查询历史版本,提交更改等等)必须首先联网,而在有些时候,这一束缚就显得不方便,而在DVCS中,则随时可以与数据仓库进行无缝的沟通,程序员可以向其中不停提交新的更改,或查询某个文件的历史版本,都可以在完全断网的情况下进行。
c) 更加智能的代码合并。
当两个人对同一份代码进行工作时,两个人的修改可能会产生冲突。然而,SVN当新的更改被提交时,SVN只能查看最终的版本,这导致SVN对某些差异很大的文件无法自动合并,而人工合并是很费时费力的。在Mercurial中,当两个不同的版本需要进行合并时,DVCS可以使用这个文件所有的修改历史来一步一步地还原整个修改的过程,这样一来,Mercurial的合并能力就远远地超过了SVN,所以在Mercurial中,极少会出现人工合并的问题。
首先,下载并安装一个TortoiseHg with Mercurial(http://tortoisehg.bitbucket.org/), TortoiseHg是一个图形化的客户端,集成于Windows explorer,与TortoiseSVN是极为类似的。这个安装包同时集成了Mercurial的主程序,所以只要装这一个就够了。(Mercurial并不需要一个服务器端)