分布式版本控制系统Mercurial介绍与使用小记
2013-12-29 13:09
281 查看
最近下载了一个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下测试成功。
更改文件权限
打开端口
可将上面两行加入/etc/rc.local这样就可以在开机的时候自动运行了。
不知道这些文件都是干嘛的,打开看了下也看不懂,于是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[/code] href="http://test:8002/" target=_blank>
这样在本地目录就会出现一个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
微信学习公众平台-媛媛推荐
微信号:programer-idea
名称:程序媛想事儿
功能介绍:媛媛的主题包括技术蛋糕(包括IT最新资讯、C/C++/Java等编程语言知识及有关算法探讨等IT资料)、生活指南、轻松一刻三个栏目,每天会推送这三个方面的信息给大家,让猿媛们在学习IT知识的同时能关注生活关注健康,同时还能轻松开怀一笑。同时,大家可以回复关键词定制自己想要的信息,如只看C/C++相关资料、只看Java相关资料、只看生活指南或只想开怀一笑都是可以的,后期会根据需要开设疑难解惑等其它平台,欢迎大家加入学习!!!
作者:Alexia(minmin)
CSDN:http://blog.csdn.net/lanxuezaipiao
博客园:http://www.cnblogs.com/lanxuezaipiao/
本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接
否则保留追究法律责任的权利
相关文章推荐
- 在什么时候需要使用“常引用”?
- 为大数据时代做好准备——来自《大数据的冲击》一书精彩片段(转)
- axis1.4部署webService 读取和响应Header信息\传送文件\BasicHandler\ SimpleChain\传递对象集合等测试
- 小强的HTML5移动开发之路(3)——HTML5与HTML4比较
- 小强的HTML5移动开发之路(3)——HTML5与HTML4比较
- UNIX网络编程之简易客户端与服务端
- 算是自己的一个突破
- MySQL索引背后的数据结构及算法原理
- 浅谈Java中的Set,List,Map的区别
- 算法导论系列文章之简单数组栈
- 将字符串转化为整数
- jsp中的directive
- 学生应尽量购买正版
- [转]Iphone m3u8 segmenter from ffmpeg for video streaming
- 基于SSLStrip的HTTPS会话劫持
- 课程1——数据类型和变量
- dumpbin查看dll中函数名字的问题
- makefile下$(wildcard $^),$^,$@,$?,$<,$(@D),$(@F)
- error: C++ preprocessor "/lib/cpp" fails sanity check错误解决方法
- TDirectory.Delete 创建删除目录简单示例