初探 Mercurial (1)

首先..友情提示: 我也是版本控制的新手一只, 勿轻信勿轻易follow我的做法…

于是在被SVN痛苦的煎熬许久之后, 终于决定换一个VC了…
在git和水银之间徘徊了一下, 由于google都选择了水银, 所以我也选用水银了~

于是现在我正在做的项目被host在本地一台服务器上(下称A), 同时在bitbucket上注册了一个私有项目用来备份, 然后对外展示的产品运行在服务器B上(下称B).

我的想法是, 因为产品本身有些复杂, 开发人员不方便直接本机调试, 所以在本地服务器上进行测试. 从本地pull到服务器A时, 服务器A应立即更新测试环境, 并同步备份到bitbucket上. 而服务器B应该手动或以较长时间间隔从bitbucket上抓取.

那么… 首先实现中间环境吧!

首先在bitbucket上注册帐号…(略去若干字)…然后, 在服务器A和B上分别clone bb上的repo. 之后, 配置服务器A的.hg/hgrc, 加入hook:

[hooks]
changegroup = uploadtobb

…然后..写脚本updatetobb!

#!/bin/sh
cd /path/to/your/repo
hg update
hg push

OK! 这样第一部份的工作就done了~


然后, 设置crontab定时从bb上更新代码到服务器B:

crontab -e

增加一行任务:

* * * * * /path/to/your/script

修改频率为你所需的…
…至于脚本, 可以这样写:

#!/bin/sh
cd /path/to/your/repo
hg pull -u

that’s all!
可以用

hg serve

来打开本机IP:8000的简单Web服务用于提交代码, 不带用户验证的, 临时给局域网内用户用用倒是可以.
如果需要用户可以上传代码, 应该在hgrc里加上:

[web]
allow_push = *
push_ssl = false

唔, 明天本猫研究hgwebdir, 到时候会继续留笔记的!

参考资料:
1, PT酱的大脑
2, http://mercurial.selenic.com/wiki/

7 thoughts on “初探 Mercurial (1)”

  1. 你这样做多麻烦,用git,可以绑定post-commit操作,GitHub也是无敌的

      1. 不,Selenium是硒,然后你搜硒和汞,就会看到如 “維他命E及硒能夠有效降低及中和汞污染所造成的神經及胎兒傷害” 这样的标题。所以Selenium这个名字是有深刻意义的。

Leave a Reply

Your email address will not be published. Required fields are marked *

QR Code Business Card