
学术论坛
分布式版本管理工具-Mercurial
冯嘉俊赵海燕
(上海理工大学上海200000)
数事其本与或用
摘要:版本控制管理在多人、多团队的研发项日中越着举足轻重的作用,有效的利用好版本控制管理工具可以大大缩短研发的周期而提高研发团队的研发效率。日前比较流行的有CVS、SVN、ClearCase等集中式的版本控制管理工具,本文将要介绍一种分布式的版本管理工具Mercurial,通过从含义,概念,配置与测试等方面入手分析了Mercuria分布式管理工具的技术特点。
关键调:Mercurial分布式版本控制管理分支策略Mercurial-Server
中图分类号:TP391.41 1Mercurial的介绍
文献标识码:A
1.1 Mercurial含义
Mercurial是一种快速的、轻量级的源代码分布式控制管理系统,它设计简单、能高效的处理大型的分布式项目工作流。Meraurial 有两个最主要也是最重要的用途,一是它能跟踪和保存所有文件的旧版本,二是它可以合并不同版本的代码,这样项目中的团队成员可以相对独立开发代码。
1.2Mercurial基本就念 1.2.1 Repository
在Mercurial中所有的文件都储存在Repository中,Repository 可以看做是一个简单的目录树文件系统。我们只需在对应的目录下使用"hg init"命令就可以把当前这个普通的目录变成一个Reposi-如ory来提供给别的团队成员使用,我们可以使用命令行或者是通过文件浏览器处理Repository中的任何文件,项目团队中的其他成员通过克隆Repository中的文件到本地,然后就可以对其下的代码进行更改、删除或是添加等操作。在Repository下有一个隐藏目录,hg,有关的配置文件和个版本文件都保存在这个目录下。
1.2.2 Clone、Commit、Push、Pull
Mercurial支持使用Hypertext Transfer Protocol(HTTP)和 Secure Shell(SSH)协议访间远程存储库,用户可以使用命令"hg clone[source Repository path] [local path]"把Server端的代码 Clone到自已的本地,从而进行修改、添加、删除等操作。
一且用户确认操作无误,即可通过"hgcommit"命令进行确认之后再使用"hgDush"命令把修改部分回传到Server端。创建一个变更集的动作称为Commit,我们用"commit"命令来执行提交。此时 Server端的代码还没有更新,如果我们希望放弃我们的变更并重新开始,我们可以用"hgrevert"命令来恢复到我们没有更改的状态。只有当运行"hgpush"命令后,Mercurial会把本地进行的操作推送到Server,此时Server端的代码才会变更。之后项目团队中的其他成员可以通过"hg Dull"获取到此次更新。
1.2.3 ChangeSet
在Repository中的所有元素都有各自唯一的Changeset。每一个 Changeset都由两部分内容组成,版本号和Changeset标识,例如:"changeset:207:58e4906e69e3”。冒号之前的数字部分代表版本号,它用来标识用户本地的版本。这个版本号只有在用户的本地Re-pository中才有意义,冒号后面的的十六进制数是Changeset标识,它是确定Changeset的全局唯一标识符,在所有包含这个Changeset 的Repository中都相同。所以当团队的多个用户之闻讨论版本的时候,一般股都会使用这个Changeset标识,而不是使用版本号,因为每个用户的Repxository中同样的Changeset版本对应的本地版本号完全有可能不相同,另外还有Branch分支策略,Merge,Tip,Head,Log
收稿日期:20141214
文章编号:1007-9416(2015)01-0224-02 等,这里就不在累述了。
2Mercurial和Mercurial-Server配置与测试
2.1Mercurial和MercurialServer的配置
之前介绍了一些Mercurial的基本概念,现在我们来看看如何部署Mercurial。我们知道,在企业中项目的研发权限控制是必不可少的,Mercurial-Server这个插件正好可以帮助我们达到权限控制的目的。和Mercurial一样,Mercurial-Server也是开源的,我们可以很方便的就获取到它。
Mercurial-Server是基于SecureShell(SSH)公共密钥的身份验证系统的插件,SSH为建立在应用层和传输层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,开发人员可以通过SSH的一对公钥和私钥来远程访问 Server端上的Repository。下面我们将介绍Mercurial,Mercurial Server如何在Server端进行部署。
由于Mercurial一Server目前只支持Unix和Linux系统下运行,如Ubuntu,Redhat,Solaris等。所以我们选择服务器的操作系统是 UbuntuServer,客户端我们则选择Windows7系统,安装 TortoiseHg(Windows系统下的Mercurial应用程序)
(1)首先Mercurial管理员在服务器端安装Mercurial和Mercu-rialServer。
Mercurial-Server安装完毕后,Mercurial-Server会在系统自动新建系统用户hg,用于管理所有代码库用户与服务器端的Mer-curial代码库直接的互动。
(2)通知用户在自已使用的Windows客户端上通过puttygen. exe工具生成SSH的一对秘钥并把公钥发送给Mercurial的管理员。
(3)Mercurial管理员获取到用户的私钥后,通过root账号把第二步生成的SSH秘钥中的公钥复制到Mercurial-Server的密钥目录下,因为刚安装好的的Mercurial-Server默认是不接受任何SSH登录的用户,所以我们必须使用roo账号。
之后再运行如下的命令,刷新Mercurial-Server使得刚才复制的自己的公朗生效。
(4)MercurialServer通过access.conf权限配置文件实现对re Dository权限的管理,所以管理员需要编辑如下文件:
acoess.conf文件的配置规则如下:
init:允许用户进行读操作、写操作并且可以创建新的Repxsitories wTite:允许用户进行读操作,写操作:
read:只允许用户进行读操作,不能进行写操作, deny:拒绝用户的所有请求;
如下的例子是授权给user用户可以对hgtest这个Repository进行读操作、写操作。
(5)用户在客户端windows下安装TortoiseHg。然后在X:>Us
作者简介:冯嘉像(1985一),男,汉族,男,江苏南通人,本科,就职于上海理工大学,研究方向:计算机技术,
s9a 22