您的位置:首页 > 运维架构 > Apache

火速配置完成mercurial(Hg)中心版本库,支持push/pull

2010-04-01 11:21 531 查看
虽然ssh方法非常完全,却不敏捷。。SCM基本上是只增不减的东西,所以支持push非常重要!

 

最好懂的方法是用hg serve,不过他不支持push,好吧。。而且默认端口是8000,我们要的是80,因为方便输入。。

所以。。最快的办法是在版本库目录输入:

echo "[web]" >>.hg/hgrc

echo "allow_read = *" >>.hg/hgrc

echo "allow_push = *" >>.hg/hgrc

echo "push_ssl   = false" >>.hg/hgrc

然后再hg serve (如果你可以用80端口,用hg serve -p 80)也可以。

 

 

当要配置的hg库超过两个时,用hg serve就不如用hgwebdir.cgi方便了(你问为什么不用hgweb.cgi,啊,

都这样了,当然选更复杂更强大的方案啦)。

 

在这里只说和apache2集成的方法,支持basic用户认证。

 

首先安装好apt-get install apache2 mercruial,再用hg clone http://selenic.com/repo/hg拿到hgwebdir.cgi。。
 

--把hgwebdir.cgi放到/var/www,(默认的web根目录)

--修改apache2中心配置(一般在/etc/apache2/site-available/default),加入一行:

ScriptAlias /hg "/var/www/hgwebdir.cgi"

--对中心仓库我们选用任读限写的模式,所以在apache中还要加一些配置:

<Location /hg>

AuthType Basic

AuthName "Mercurial repositories"

AuthUserFile /var/www/hgusers

<LimitExcept GET>

Require valid-user

</LimitExcept>

</Location>

--编辑文件/var/www/hgweb.config,内容为(设定hg仓库集中在/var/hg/repo目录下):

[collections]

/var/hg/repo=/var/hg/repo

[web]

allow_push = *

push_ssl = false

--添加两个用户的方法,是运行htpasswd命令:

#rm /var/www/hgusers  (如果想清空用户名)

htpasswd -c /var/www/hgusers user1 (首次要加-c)

htpasswd /var/www/hgusers user2

--提下来别忘了重要的:加上文件权限

chmod a+r /var/www/hgusers

chmod a+x /var/www/hgwebdir.cgi

chmod a+r /var/www/hgweb.config

chmod -R a+w /var/hg/repo

好了,restart apache2,再访问http://localhost/hg,应该可以看到仓库列表,

并且支持user1和user2的push,和匿名的pull了。

P.S:

以上配置应对的是最简单的情况,如有疑问,可以留言,或参阅:
 http://mercurial.selenic.com/wiki/PublishingRepositories#multiple 
希望mercurial(Hg)越来越好~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐