最近下载了一个Google开源库的源代码,看到里面有个.hg文件夹,里面有一些这样的文件:
不知道这些文件都是干嘛的,打开看了下也看不懂,于是google了下发现是版本控制系统Mercurial的文件,以前只听说过CVS(现在基本已淘汰)、SVN和Git这三种版本控制系统,不知道Mercurial为何物,于是就稍微学习了下。
1. Mercurial简单介绍
Mercurial 是一种轻量级分布式版本控制系统,采用 Python 语言实现,易于学习和使用,扩展性强。相对于传统的版本控制,具有如下优点:
- 更轻松的管理。
传统的版本控制系统使用集中式的 repository,一些和 repository相关的管理就只能由管理员一个人进行。由于采用了分布式的模型,Mercurial 中就没有这样的困扰,每个用户管理自己的 repository,管理员只需协调同步这些repository。 - 更健壮的系统。
分布式系统比集中式的单服务器系统更健壮,单服务器系统一旦服务器出现问题整个系统就不能运行了,分布式系统通常不会因为一两个节点而受到影响。 - 对网络的依赖性更低。
由于同步可以放在任意时刻进行,Mercurial 甚至可以离线进行管理,只需在有网络连接时同步。
这个工具在国内很少人使用,所以中文资料匮乏.不过国外使用的人还是不少,比如Google,总体上来说,hg还是比较好用的,属于轻量级的,适合一些小型项目。
2. Mercurial简单配置及使用
这里简单介绍一下hg服务器的配置。关于hg在基本用法参见mercrial的官方网站。
在做以下操作前,请先到官方网站下载安装hg。下面在Ubuntu 13.04下测试成功。
2.1 建立用户hgrepo
其它用户将用这个账户在hg服务器上push代码。
useradd hgrepo -d /home/hgrepo # add user hgrepo
passwd hgrepo
2.2 建立hg代码仓库
如果代码仓库名称为project.hg,则可用如下命令建立仓库文件夹及初始化代码仓库。
cd /home/hgrepo
mkdir project.hg
cd project.hg
hg init # 初始化代码仓库
2.3 建立一个测试文件,添加进仓库并检查
echo "hello, mercurial" > sample.txt
hg add # add
hg ci # check in
2.4 打开http
打开一个端口,让远程用户可以clone仓库中的代码,在打开端口前请确定文件权限正确。
更改文件权限
chown hgrepo.hgrepo /home/hgrepo/project.hg -R
chmod og+rw /home/hgrepo/project.hg -R
打开端口
cd /home/hgrepo/project.hg -R
hg serve -p 8002 &
可将上面两行加入/etc/rc.local这样就可以在开机的时候自动运行了。
3. 使用hg
完成步骤2以后,我们就可以使用了。
3.1 clone到本地
例如你的服务器的名字为test,则用hg clone命令克隆到本地
hg clone http://test:8002
这样在本地目录就会出现一个project.hg的一个副本。
3.2 修改Client端的配置
更改.hg/hgrc,加上default-push和username字段
[paths]
default = http://test:8002
default-push = ssh://hgrepo@test//home/hgrepo/project.hg/
[ui]
username=shaohui.zheng
这样你就可用hg push 向服务器提交code了。这时服务器会问你passward,这个password就是用户hgrepo的password。
上面只是简单的使用,具体的配置选项及其它命令选项请参考mercrial的官方网站。
4. 参考资料
http://www.oschina.net/p/mercurial/
http://blog.csdn.net/linxxx3/article/details/5989807
版权声明:本文为lanxuezaipiao原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。