用hgweb来发布Mercurial repository

hg repository 有多种的发布方式,前面我讲到过hg serve,这次主要写一下hgweb,它可以做到像http://xenbits.xen.org/hg/ 这样的效果。
新版的hgweb.cgi支持多个repository的发布了(我目前就是使用的hgweb.cgi),如果是比较老的Mercurial,就需要使用hgwebdir.cgi才能支持多个repository。我刚好使用过Mercurial的1.6.4和较老的1.4.3版本(是RHEL6.2自带的,我使用hgwebdir.cgi)。新老两种方法都分别介绍一下吧。
Mercurial可以从这里下载:http://mercurial.selenic.com/release/?M=D

新的Mercurial使用hgweb.cgi
1. 安装Mercurial: (略)
找到source code中的hgweb.cgi这个文件,将其copy到/var/www/hgweb/下。
2. 配置Web Server:以Apache为例
vim /etc/httpd/conf/httpd.conf 添加如下一行
ScriptAlias /hg "/var/www/hgweb/hgweb.cgi"
在/var/www/hgweb目录下,配置rewrite规则,vim .htaccess 做如下配置

3. 配置hgweb.cgi及其配置文件:
vim /var/www/hgweb/hgweb.cgi 做如下配置:

vim /etc/hgweb.config 做如下配置:

4. 重启Web Server 即可
5. 使用repository:浏览器访问:http://vt-repo/hg/
client端执行命令:hg clone http://vt-repo/hg/xen-unstable.hg xen-unstable.hg

老的Mercurial使用hgwebdir.cgi
其使用方法和上面新的hgweb.cgi是类似的了。
1. vim httpd.conf
ScriptAlias /hg "/var/www/hgweb/hgwebdir.cgi"

vim /var/www/hgweb/.htaccess

2. vim hgwebdir.cgi 配置

vim /etc/hgweb.config 配置
[paths]
xen-unstable.hg = /home/repo/pub/xen-unstable.hg
xen-unstable-staging.hg = /home/repo/pub/xen-unstable-staging.hg
3. 重启Web Server
4. 使用方法就是一样的了

repository支持hg push的配置:
使用http/web方式push:在server端的repo中修改.hg/hgrc文件。
(或者修改your Web server user's .hgrc file, such as /home/www-data/.hgrc, or a system-wide hgrc file like /etc/mercurial/hgrc)
添加如下配置信息:

注意:以上配置皆为我在测试环境中的配置,请自己根据实际情况略作修改。运行Web Server的user一定要对repository有可读的权限(如果要push,则需要有读写权限)。

参考资料:
http://mercurial.selenic.com/wiki/PublishingRepositories#hgweb

master

Stay hungry, stay foolish.

发表评论

邮箱地址不会被公开。 必填项已用*标注

*