2012年4月8日星期日

Mercurial 小记

记得接触Git的时候,就有种相见恨晚的感觉,比较惭愧的是,把玩linux那么久了,接触Git还是毕业设计时候的事情。好在Git的设计优良,很多时候感觉特别顺手,当然这不是说其他的SCM不顺手,还跟个人的习惯有关系。python是最近才接触的一门脚本语言,熟悉它的大牛想必也是赞不绝口,个人认为python的优雅程度不亚于其他主流语言。既然学习python,示例代码肯定是很重要的一个东东,所以学习python就是要看python写的东东,最近也是对SCM版本控制比较感冒,所以认识了Mercurial。

话说Mercurial,作为一个SCM,分布式版本控制系统,其实它还有个小名:Hg,当然这是命令,官方网站:http://mercurial.selenic.com/。由于它的学名太长,就以Hg替代了。

关于它的来龙去脉就不详细的描述了,Google知道的比我多。这里就简记一下使用Hg的整个过程;下载Hg源码,去官网,不多说;下面是编译(谈不上是编译)和安装:
python setup.py build
python setup.py install # 此处需要root权限
ok,如果不出意外的话,Hg安装成功。Shell下验证一下:
hg --version
个人感觉Hg对于Shell细节的支持不如Git完美,简单的一个例子:git log支持分页显示,hg log如果支持分页,则必须hg log | less。当然,可能我熟悉Hg还不够透彻,还没找到机关。我承认我是一个Shell控,凡事必先考虑Shell下工作,其次才是图形界面。下面就配置一下Hg的Shell细节:
[pager]
pager = LESS='FSRX' less
quiet = True
attend = annotate, cat, diff, export, glog, log, qdiff, tip
[extensions]
color =
progress =
children =
pager = 
[alias]
llog = log --limit 10
Hg的扩展是个好东西,一切很有趣的东东都可以通过一个简单的~/.hgrc写入,解释一下上面的扩展含义:color,顾名思义,打开shell颜色比对效果,比如diff时显示;graphlog更不用说了,就是执行hg log的时候显示颜色;progress,当hg clone 时,显示克隆的进度。其实除上面的以外,还有好多不为我知的有用的官方扩展以及第三方扩展,具体的可以参考官网:http://mercurial.selenic.com/wiki/UsingExtensions

Hg的使用按官方的说法,算不上难,可能是我个人使用Git习惯了,反倒感觉不顺手,呵呵,因人而异了,官方handbook:http://mercurial.selenic.com/guide/。其他的暂时不更新了,也在熟悉中;后续补充吧。