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

虽然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)越来越好~~~


发布了107 篇原创文章 · 获赞 10 · 访问量 43万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章