在如今的开发过程中,一般都会引入版本控制系统,这一点不限于Python。一般而言,对于源代码的版本控制常用于多人团队开发,但在管理个人源代码时,同样能够从版本控制系统中受益。比如有一天你突然发现自己开发的应用程序无法工作,就可以通过版本控制系统立刻回退到正确的版本状态;再比如在出现问题时,可以通过版本控制中的时间序列信息,迅速发现问题发生的时间点。 在版本控制系统中,与CVS和Subversion这类集中式的代码库(repository)版本控制系统相比,越来越多的团队开始使用诸如Git和Mercurial这类分布式版本控制系统DVCS(Distributed Version Control System)。Mercurial这类分布式版本控制系统最大的特点是:一个个分散的代码库可以独立使用,可以对其任意进行分支建立、提交、变更、取消等操作,且不会给其他代码库带来任何影响。一个个分散的代码库可视为整个代码库的备份。 01.02.01 Mercurial的简介 Mercurial是Linux内核开发人员马特•马考尔(Matt Mackall)于2005年开发 的DVCS,与Linux内核之父林纳斯•托瓦兹(Linus Torvalds)开发的Git处于同一时 代 。现在,Git和Mercurial已经作为DVCS的代表,在业内被广泛地使用。 Mercurial主要使用Python编写 ,还可以用pip命令进行安装或用Python程序对其功能进行定制。对于已经熟悉Python的用户而言,它非常容易上手;对于使用Python进行开发的团队而言,它非常有亲和力。 Mercurial拥有基于Web的构建管理工具、Bitbucket(https://bitbucket.org/)等知名在线代码托管库、如TortoizeHg(http://tortoisehg.bitbucket.org/)那样的图形用户界面客户端等,这些都是Mercurial的魅力所在。 除上面提到的优点外,Mercurial还有类似svn的命令体系,可以使长期使用svn的用户更容易平滑地迁徙到Mercurial上来,而这一点是Git所不及的。 01.02.02 Mercurial的安装 仅通过上面的的说明,你可能无法了解到DVCS的优点,接下来我们将实际操作一下Mercurial的整个安装过程。如果你想了解Mercurial的高级应用,可以阅读本书的第8章。如果你已熟悉Mercurial,可以跳过下面的内容。 Mercurial的安装方法和其他基于Linux包的安装方法基本相同,可以使用aptitude、pip以及源代码直接编译等多种方法。本书尽可能介绍最新版的Mercurial的安装,因此使用pip方法来进行。 Mercurial的安装 $ sudo pip install mercurial 当Mercurial安装完毕之后,就可以使用hg命令了 。我们可以输入hg--version来确认Mercurial的版本信息。 Mercurial的安装确认 $ hg --version Mercurial Distributed SCM (version 2.0.1) (see http://mercurial.selenic.com for more information) Copyright (C) 2005-2011 Matt Mackall and others This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 01.02.03 代码库的建立 在建立Mercurial的代码库之前,需要准备一份关于Mercurial环境配置的清单文件。该文件存放在用户的home目录下,扩展名为.hgrc。该文件的内容如下面例子所示。其中被中括号[ ]括起来的部分称为节(section),如[ui]节就是用来配置Mercurial的用户信息的。 环境配置清单文件中设定的username信息将被作为代码库的账户,在进行提交操作时被Mercurial记录下来,所以请尽可能使用自己的账户名和邮件地址填写环境配置清单文件。 .hgrc的用户名与邮件地址的设置 [ui] username=bpbook <bpbook@beproud.jp> [extensions] graphlog= color= pager= [pager] pager=LESS='FSRX' less [extensions]节用于Mercurial的外部工具扩展。对其中的每一个项目,如果填上外部扩展工具名,就可以在Mercurial使用。不过有些外部工具还需要进行其他设置。如pager,用户在配置了[extensions]节中的[pager]项后,还需要对具体的pager项进行配置,此时[pager]节内容才会正式生效。 当完成了Mercurial环境配置清单文件之后,就可以生成代码库了。如下面的命令所示,在建立了代码库对应的目录之后进入该目录,使用hg init命令。 hg init (初始化代码库) $ mkdir ~/hgtest $ cd ~/hgtest $ hg init 01.02.04 文件的操作 在建立了代码库以后,接下来我们试着往代码库添加一个文件。先建立一个测试文件,接着确认该文件的状态。 代码库的状态确认需要使用hg status命令。如果觉得每次都使用status命令比较麻烦,可以使用hg st缩写命令。hg命令事先均提供了缩写形式,方便用户使用,具体可以参考相关的帮助手册。 hg status(状态的确认) $ touch test.txt $ hg status ? test.txt 在文件名的左侧,记录了该文件在代码库中的状态。在上面例子中,test.txt文件的左侧有一个“ ?”标记,表示该文件尚未进入Mercurial的管理。接下来,我们将该文件加入到Mercurial的文件管理中去。向Mercurial中添加文件,可以使用命令hg add。 hg add(添加文件) $ hg add test.txt $ hg status A test.txt 在使用了命令hg add之后,再一次确认文件状态信息,这时可以发现文件前面的标记变为了A,这就表示已经成功地向版本控制软件中添加了文件test.txt。 为了使得所添加的文件在代码库中生效,就需要使用提交(commit)操作。如下例输入命令hg commit。如果没有输入hg commit,所添加的文件并没有真正存在于代码库中,而仅仅是存在于用户对文件操作的地方而已。 hg commit(提交操作) $ hg commit test commit HG: Enter commit message. Lines beginning with 'HG:' are removed. HG: Leave message empty to abort commit. HG: -- HG: user: bpbook <bpbook@beproud.jp> HG: branch 'default' HG: added test 输入hg commit命令以后,文本编辑器会打开,并提示输入注释。这里我们输入test commit。 在注释栏的下面,会看到[branch'default']字样。这是告知用户目前正在操作的开发分支是default分支(即代码库刚刚建立时就已创建的分支)。 用户可以修改在提交时输入注释信息的默认编辑器。修改方法如下所示,在原来的.hgrc文件的[ui]节添加一个叫做editor的参数配置即可。 这就表示以后均采用vim作为提交注释的默认编辑器。默认的编辑器同环境变量EDITOR有关,我们可以通过下面的命令来确认默认编辑器是什么。 再一次提交文件之后,使用hg status确认一下内容,会发现和下面给出的结果一样,没有任何输出。 提交确认状态 $ hg status 接下来我们介绍一下,通过Mercurial如何对编辑过的文档进行操作。 我们用编辑器打开test.txt文件,任意编辑一下,然后保存退出。接着输入hg status查看,会发现文档的状态前面出现了M的标记。状态M表示该文件在提交之后进行了更改,即Modification(变更)。我们可以用hg diff命令,看一下变更前的文件和当前修改过的文件的内容差异。 用hg diff查看内容差异 $ hg status M test.txt $ hg diff diff -r 74471564b074 test.txt --- a/test.txt Mon Oct 31 18:07:15 2011 +0900 +++ b/test.txt Mon Oct 31 18:10:45 2011 +0900 @@ -0,0 +1,1 @@ +modify this file 在提交前,我们也可以用hg revert命令取消编辑过的文件。 用hg revert取消编辑 $ hg revert test.txt 如果需要取消已经提交的内容,可以使用hg rollback这个命令,但该命令只能取消前一次提交的内容。 用rollback取消提交 $ hg rollback $ hg status A test.txt 在上面的例子中,我们使用hg rollback命令取消了前一次提交的内容,因此在test.txt文件前面再一次看到了状态A的内容。 接着我们来了解一下如何查看提交的历史信息。我们可以再一次使用hg commit命令提交test.txt,然后输入hg log来查看提交历史。 用hg log查看提交的历史日志 $ hg log changeset: 0:74471564b074 tag: tip user: bpbook <bpbook@beproud.jp> date: Mon Oct 31 18:07:15 2011 +0900 summary: test commit 至此为止,我们将Mercurial的基本操作介绍完毕,接下来与此相关的还有如下几个话题: 分支的操作 使用远程代码库 团队开发Mercurial的使用方法 上面的这些话题我们将会在第3章和第8章中详细讨论。
Python开发实战——01.02 Mercurial环境搭建
书名: Python开发实战
作者: [日] BePROUD股份有限公司
出版社: 人民邮电出版社
译者: 盛荣
出版年: 2014-6
页数: 378
定价: 79.00元
装帧: 平装
ISBN: 9787115320896