雖然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)越來越好~~~