コンテンツにスキップ

Mercurial

Error

もう基本使われていない

python製の分散バージョン管理ツール

Web経由 アクセス設定

環境条件

  • Ubuntu Server 10.04
  • apt-getした場合のmercurialは1.4.3
  • apache2は導入済みと仮定
  • Mercurial Webサイトのディレクトリ : /var/hg/
  • プロジェクトAのリポジトリ : /var/hg/project-a
  • プロジェクトBのリポジトリ : /var/hg/project-b

設定

必要モジュールの入手

apt-get install mercurial libapache2-mod-wsgi

cgiの設置

mkdir /var/hg
cd /var/hg
cp /usr/share/doc/mercurial/examples/hgwebdir.cgi .
chmod 700 hgwebdir.cgi

apacheの設定: /etc/apache2/sites-available/default

    ScriptAlias /hg /var/hg/hgwebdir.cgi
    <Directory /var/hg>
        AuthType Basic
        AuthName "Mercurial repositories"
        AuthUserFile /etc/apache2/hgusers
        Require valid-user
    </Directory>

Note

Digest認証の場合は、AuthTypeをDigestに。

apacheの認証設定

htpasswd -mc /etc/apache2/hgusers admin
htpasswd -m /etc/apache2/hgusers onechan
htpasswd -m /etc/apache2/hgusers imoto

Diegst認証の場合

htdigest -m /etc/apache2/hgusers 'Mercurial repositories' admin

Ubuntuのapache2はauth_digestが有効になっていないかもしれないので、必要なら有効にする

a2enmod auth_digest enable

apacheの再起動

service apache2 restart

リポジトリの作成

mkdir /var/hg/project-a
cd /var/hg/project-a
hg init
mkdir /var/hg/project-b
cd /var/hg/project-b
hg init

登録

cd /var/hg
echo "[collections]" >> hgweb.config
echo "/var/hg/project-a = project-a" >> hgweb.config
echo "/var/hg/project-a = project-b" >> hgweb.config
chown -R www-data.www-data /var/hg

1.6以降では、[collecttions]は[paths]と書く必要があると思う。

あとは以下のようにcloneできる。

hg clone http://www.example.com/hg/project-a
  • 特定のユーザからのアクセスを弾きたい時は、hgrcの[web]セクションに deny_read = <username> と書けば、一覧からも消えるしアクセスしたら read not authorized にできる。

リポジトリ作成支援スクリプト

#!/bin/sh

mkdir /var/www/hg/$1
cd /var/www/hg/$1
hg init
cd .hg

echo "[web]" >> hgrc
echo "push_ssl = false" >> hgrc
echo "allow_push = root" >> hgrc
echo "contact = root@example.com" >> hgrc
echo "name = $1" >> hgrc
echo "description = None" >> hgrc

echo "/var/www/hg/$1 = $1" >> /var/www/hg/hgweb.config
chown -R www-data.www-data /var/www/hg/$1
ls -l /var/www/hg | grep $1

最終更新日: 2021-05-22 13:37:13