返回介绍

1.2 安装 Mercurial

发布于 2024-01-21 17:11:03 字数 5125 浏览 0 评论 0 收藏 0

版本控制系统在如今的开发过程中已经十分普及,Python 自然也不例外。人们使用版本控制系统通常是为了多人一起管理源码,不过,将它引入到个人开发中也能带来不少好处。比如在开发过程中应用突然不工作了,我们就可以将其回溯成能正常工作的版本。另外,对版本进行管理之后,一旦哪里发现了问题,我们可以立刻沿时间线查找之前的版本,快速找出问题发生的时间点。

版本控制系统大致可分为两类,一类是 CVS 和 Subversion 这种单一版本库的版本控制系统,另一种则是 Mercurial 和 Git 这种分布式版本控制系统(Distributed Version Control System,DVCS),如今越来越多人倾向于使用后者。Mercurial 这种分布式版本控制系统最大的优势在于各个版本库独立,因此在创建分支、提交、取消更改时不会对周围人造成影响。而且分布式的版本库可以各自看作是彼此的备份。

接下来我们来了解一下 Mercurial。

1.2.1 Mercurial 概述

Mercurial 是 Linux 内核的开发者 Matt Mackall 于 2005 年开始开发的分布式版本控制系统。Linux 内核之父 Linus Torvalds 也于同期开始开发 Git。如今这二者已经成为分布式版本控制系统的代表,被人们广泛使用。

由于 Mercurial 本身就是由 Python 编写而成的,因此我们可以轻松地通过 pip 进行安装,也可以将其视为 Python 程序进行自定义设置。

对熟悉 Python 的用户而言易于上手,与使用 Python 进行开发的团队亲和力高,这些都是 Mercurial 的优势所在。

此外,Mercurial 的魅力还在于内置了基于 Web 的管理工具,支持 Bitbucket5 等著名源码托管服务,TortoiseHg6 等 GUI 客户端丰富,等等。

5 http://bitbucket.org/

6 http://tortoisehg.bitbucket.org/

不仅如此,Mercurial 的命令体系与广为人知的 Subversion 很类似,对于长期使用 Subversion 的用户而言,要比 Git 更容易上手。

1.2.2 安装 Mercurial

单看前面的说明很难对分布式版本控制系统的优势有一个明确理解,所以现在我们通过实际的安装和操作来体会一下。另外,高级的 Mercurial 运用技巧我们将在第 6 章中进行学习,熟悉 Mercurial 的读者可以直接跳过本部分。

Mercurial 与其他程序包一样具有多种安装方法,用户可以通过 apt-get 、pip 、源文件构建等不同途径进行安装。这里我们为保证 Mercurial 尽量是最新版,决定选用 pip 进行安装(LIST 1.17)。

LIST 1.17 安装 Mercurial

$ sudo pip install mercurial

Mercurial 安装完成后我们就可以使用 hg 命令了。现在输入 hg --version 来查看版本(LIST 1.18)。

LIST 1.18 查看 Mercurial 的安装情况

$ hg --version
Mercurial Distributed SCM (version 3.1.2)
(see http://mercurial.selenic.com for more information)
Copyright (C) 2005-2014 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.

1.2.3 创建版本库

在创建版本库之前,我们先准备好 Mercurial 的环境设置文件。在主目录下创建名为 .hgrc 的文件,然后进行如下描述。其中括号内的部分称为节(Section),比如 [ui] 节就是用来设置 username 属性的。

username 中的账户信息会在用户向版本库进行提交时记录在日志中。各位请将自己的账户名和邮箱地址写在这里(LIST 1.19)。

LIST 1.19 设置 .hgrc 的用户名与邮箱地址

[ui]
username=bpbook <bpbook@beproud.jp>
[extensions]
color=
pager=
[pager]
pager=LESS='FSRX' less

[extensions] 节用来激活 Mercurial 附属的扩展工具。只要将扩展工具名写入 [extensions] 节的项目中,我们就可以使用该工具了。此外,某些扩展工具不仅要在 [extensions] 中设置激活,还需要在 [pager] 节中设置 pager 属性。

完成环境设置文件之后就该创建版本库了。如 LIST 1.20 所示,我们为版本库创建一个目录并移动至该目录下,执行 hg init 命令创建版本库。

LIST 1.20 hg init(初始化版本库)

$ mkdir ~/hgtest
$ cd ~/hgtest
$ hg init

1.2.4 文件操作

创建好版本库之后让我们给它实际添加文件。现在创建一个测试用的文件,查看当前版本库的状态。

查看版本库状态用 hg status 命令(LIST 1.21)。如果觉得每次输入 status 太麻烦,可以将这个命令缩写为 hg st 。hg 命令为用户准备了部分缩写形式,感兴趣的读者可以参考帮助或其他资料。

LIST 1.21 hg status(查看状态)

$ touch test.txt
$ hg status
? test.txt

文件名左侧显示了该文件在版本库内的状态。各位可以看到 text.txt 文件的左侧显示了状态“? ”,这代表该文件现在并不在版本管理的范围内。因此我们执行 hg add 命令将其添加为版本管理的对象,如 LIST 1.22 所示。

LIST 1.22 hg add(添加文件)

$ hg add test.txt
$ hg status
A test.txt

执行 hg add 之后我们再进行一次查看,会发现之前的“? ”已经变成了“A ”。这代表该文件是新添加到版本管理里的。

要想让添加文件反映到版本库,我们需要进行提交。提交时请按照 LIST 1.23 所示,输入 hg commit 命令。如果不执行 hg commit ,那么我们创建的文件就只能停留在当前工作的机器里,不会反映到版本库中。

LIST 1.23 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.txt

执行 hg commit 后编辑器就会启动,用来记录提交时的相关信息与注释。我们在这里输入 test commit 。

注释输入栏下方显示着 branch 'default' ,这表示 default 分支(版本库创建时就存在的分支)为我们当前进行修正 / 添加操作的对象。

NOTE

提交时打开的编辑器是可以更改的。更改时需要如下例所示,在 .hgrc 的 [ui] 节里添加 editor 属性。

[ui]
editor = vim

这表示我们要使用vim 编辑器。默认启动的编辑器取决于环境变量EDITOR,环境变量可以用下述命令查看。

$ echo $EDITOR
vim

提交文件之后用 hg status 查看,结果应该如 LIST 1.24 所示,什么都没有。

LIST 1.24 提交后的查看

$ hg status

接下来我们看看如何在 Mercurial 中操作编辑过的文件。

先用编辑器打开 test.txt 进行修改,然后保存文件。在当前状态下执行 hg status 后,会发现该文件的状态变成了 M 。状态 M 表示该文件在最后一次提交之后又进行了“变更”(Modify)。使用 hg diff 命令可以查看变更前的状态(已提交的文件)与当前状态的差别(LIST 1.25)。

LIST 1.25 hg diff(查看差别)

$ hg status
M test.txt
$ hg diff
diff -r 74471564b074 test.txt
--- a/test.txt    Mon Oct 31 18:07:15 2014 +0900
+++ b/test.txt    Mon Oct 31 18:10:45 2014 +0900
@@ -0,0 +1,1 @@
+modify this file

在尚未提交的状态下,我们可以使用 hg revert 命令撤销编辑(LIST 1.26)。

LIST 1.26 hg revert(撤销编辑)

$ hg revert test.txt

NOTE

hg revent 可以撤销尚未提交的内容,但对已提交的内容无效。这种情况需要使用 hg commit --amend 命令对已提交的变更集进行修改或撤销。

Mercurial 的基本操作方法就解说到这里,但下列几项我们并未提及。

· 分支的操作

· 远程版本库的使用

· 以团队开发为前提的 Mercurial 的使用方法

上述几点我们将在第 4 章和第 6 章中详细了解。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文