Mercurial+Apache+SSL+Basic認証で手軽にバージョン管理(hgweb.cgi)

Pocket

ここを参考にした。

Mercurialのインストール

# yum install gcc python python-devel python-setuptools
# easy_install mercurial

リポジトリ用のユーザ作成

# adduser hg
$ cd /home/hg/
$ mkdir public_html

hgweb.cgiを取得

ソースを取ってくる*1
http://mercurial.selenic.com/release/?M=D

$ wget http://mercurial.selenic.com/release/mercurial-1.7.5.tar.gz
$ tar xvzf mercurial-1.7.5.tar.gz
$ cp mercurial-1.7.5/hgweb.cgi public_html

hgweb.cgiを以下のように編集する。


# hgweb.cgi
#!/usr/bin/env python
#
# An example hgweb CGI script, edit as necessary
# See also http://mercurial.selenic.com/wiki/PublishingRepositories

# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "/home/hg/.config"

# Uncomment and adjust if Mercurial is not installed system-wide:
#import sys; sys.path.insert(0, "/path/to/python/lib")

# Uncomment to send python tracebacks to the browser if an error occurs:
#import cgitb; cgitb.enable()

from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
wsgicgi.launch(application)

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

hg設定

vi /home/hg/.config

hgリポジトリのリストを格納するディレクトリを指定する。

[collections]
/home/hg/repos = /home/hg/repos

リポジトリリストの所有者をapacheユーザに設定する。

# chown -R apache. /home/hg/repos

このままじゃapacheがhgのホームディレクトリ以下に入れないので

# chmod +x /home/hg

httpd.confを編集する

# httpd.conf
Alias /hg/ /home/hg/public_html/
<Directory "/home/hg/public_html">
Order allow,deny
Allow from all
AllowOverride All
Options ExecCGI
AddHandler cgi-script .cgi
# SSL必須にする
SSLRequireSSL
</Directory>

ターゲットリポジトリにpush許可

# [target_repository].hg/hgrc
[web]
description = short description of repo-name
author = Madoka Kaname <madoka@example.com>
allow_push = *

apache再起動(reloadでもいける?)

Basic認証をかける

$ htpasswd -c /home/hg/repos/.htpasswd madoka
# /home/hg/public_html/.htaccess
AuthName "Mercurial Repositories Authentication"
AuthUserFile /home/hg/repos/.htpasswd
AuthType Basic
Require valid-user

pushのたびに認証するのめんどくさい?

Repository Settingsから

追記

会社のリポジトリ環境触ってたときにこれ見ながらやってて
なぜかできねーって嘆いてたらBasic認証の文法おもいっきり間違ってたので修正。

*1:運用してるMercurialとバージョンは合わせた方がいいよ

投稿者紹介

株式会社ユニキャスト
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください