Install Mercurial Server on Ubuntu

Refernece : http://phpfour.com/blog/2011/05/setting-up-central-mercurial-server-in-ubuntu/
http://mercurial.selenic.com/wiki/PublishingRepositories#Publishing_multiple_repositories

$ sudo apt-get install mercurial
安裝Mercurial


$ cd /var/
$ sudo mkdir hg
$ sudo mkdir hg/repos
$ sudo chown -R www-data:www-data hg/repos



$ cd /var/hg
$ sudo cp /usr/share/doc/mercurial/examples/hgweb.cgi .
$ sudo chmod a+x hgweb.cgi


$ vim hgweb.cgi


config = "/var/hg/hgweb.config"

import os
os.environ['HGENCODING'] = "UTF-8"




$ vim hgweb.config
[collections]
/var/hg/repos = /var/hg/repos


$ cd /etc/apache2/sites-available
$ sudo vim default


如果你default裡面沒有定義的話,就依照我的範例複製貼上就可以了:



  1. <VirtualHost *:8080>
  2.         ServerAdmin webmaster@localhost
  3.         DocumentRoot /var
  4.         ScriptAlias /hg "/var/hg/hgweb.cgi"
  5.         <Directory />
  6.                 Options FollowSymLinks
  7.                 AllowOverride None
  8.         </Directory>
  9.         <Directory /var>
  10.                 Options Indexes FollowSymLinks MultiViews
  11.                 AllowOverride all
  12.                 Order allow,deny
  13.                 allow from all
  14.                 AuthType Basic
  15.                 AuthName "Mercurial repositories"
  16.                 AuthUserFile /var/hg/hgusers
  17.                 Require valid-user
  18.         </Directory>
  19.         ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
  20.         <Directory "/usr/lib/cgi-bin">
  21.                 AllowOverride None
  22.                 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
  23.                 Order allow,deny
  24.                 Allow from all
  25.         </Directory>
  26.         ErrorLog ${APACHE_LOG_DIR}/error.log
  27.         # Possible values include: debug, info, notice, warn, error, crit,
  28.         # alert, emerg.
  29.         LogLevel warn
  30.         CustomLog ${APACHE_LOG_DIR}/access.log combined
  31.     Alias /doc/ "/usr/share/doc/"
  32.     <Directory "/usr/share/doc/">
  33.         Options Indexes MultiViews FollowSymLinks
  34.         AllowOverride None
  35.         Order deny,allow
  36.         Deny from all
  37.         Allow from 127.0.0.0/255.0.0.0 ::1/128
  38.     </Directory>
  39. </VirtualHost>





$ vim /etc/apache2/ports.conf
加入以下兩列文字,因為我的Mercurial Server的port是設在8080


NameVirtualHost *:8080
Listen 8080

sudo apache2ctl restart

$ cd /var/hg
$ htpasswd -mc hgusers admin

建立Mercurial Server 的管理員


htpasswd -m hgusers abid
建立其他的使用者


$ vim /etc/mercurial/hgrc
[web]
allow_push = *
push_ssl = false



$ cd /var/hg/repos
$ mkdir test
$ chown www-data:www-data test
P.S. 上面這個步驟一定要做,不然在push資料到server上會出現

abort: HTTP Error 500: Permission denied
不給你push任何東西上server
$ cd test
$ hg init


建立test的project


用瀏覽器去測試看看 http://your.ip:8080/hg/test


$ cd /var/www
$ hg clone http://your.ip/hg/test

如果想要clone Server上的project就用上面指令


上面只是建立Mercurial Server的方法之一,而且這樣的設定安全性看起來不高
需要在做其他的設定。

留言

熱門文章