注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

笑遍世界@网易博客

明天还会在路上……

 
 
 

日志

 
 
关于我

Stay hungry, stay foolish. 工作用脑,生活用心! 走过山重水复,必然迎来柳暗花明! 受苦的人没有悲观的权利,远征的人没有流泪的资格。 Live each day as if we should die tomorrow.

网易考拉推荐
 
 

用hgweb来发布Mercurial repository  

2012-02-02 21:43:42|  分类: Linux技术 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

hg repository 有多种的发布方式,前面我讲到过hg serve,这次主要写一下hgweb,它可以做到像http://xenbits.xen.org/hg/ 这样的效果。

新版的hgweb.cgi支持多个repository的发布了(我目前就是使用的hgweb.cgi),如果是比较老的Mercurial,就需要使用hgwebdir.cgi才能支持多个repository。我刚好使用过Mercurial1.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 做如下配置

# Taken from http://www.pmwiki.org/wiki/Cookbook/CleanUrls#samedir

# Used at http://ggap.sf.net/hg/

Options +ExecCGI

RewriteEngine On

#write base depending on where the base url lives

RewriteBase /hg

RewriteRule ^$ hgweb.cgi  [L]

# Send requests for files that exist to those files.

RewriteCond %{REQUEST_FILENAME} !-f

# Send requests for directories that exist to those directories.

RewriteCond %{REQUEST_FILENAME} !-d

# Send requests to hgweb.cgi, appending the rest of url.

RewriteRule (.*) hgweb.cgi/$1  [QSA,L]

3.       配置hgweb.cgi及其配置文件:

vim /var/www/hgweb/hgweb.cgi 做如下配置:

#!/usr/bin/env python

#

# An example hgweb CGI script, edit as necessary

# See also http://mercurial.selenic.com/wiki/PublishingRepositories

 

# Path to repo or hgweb config to serve (see 'hg help hgweb')

config = "/etc/hgweb.config"

 

# Uncomment and adjust if Mercurial is not installed system-wide:

#import sys; sys.path.insert(0, "/path/to/python/lib")

 

# Uncomment to send python tracebacks to the browser if an error occurs:

#import cgitb; cgitb.enable()

 

from mercurial import demandimport; demandimport.enable()

from mercurial.hgweb import hgweb, wsgicgi

application = hgweb(config)

wsgicgi.launch(application)

         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

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

# Taken from http://www.pmwiki.org/wiki/Cookbook/CleanUrls#samedir

# Used at http://ggap.sf.net/hg/

Options +ExecCGI

RewriteEngine On

#write base depending on where the base url lives

RewriteBase /hg

RewriteRule ^$ hgwebdir.cgi  [L]

# Send requests for files that exist to those files.

RewriteCond %{REQUEST_FILENAME} !-f

# Send requests for directories that exist to those directories.

RewriteCond %{REQUEST_FILENAME} !-d

# Send requests to hgwebdir.cgi, appending the rest of url.

RewriteRule (.*) hgwebdir.cgi/$1  [QSA,L]

 

2.       vim hgwebdir.cgi 配置

application = hgwebdir('/etc/hgweb.config')

wsgicgi.launch(application)

 

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]

push_ssl = false

allow_push = *

 

 

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

 

参考资料:

http://mercurial.selenic.com/wiki/PublishingRepositories#hgweb

  评论这张
 
阅读(1565)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017