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