TortoiseHgを使ってWindowsマシンをMercurialのリポジトリサーバにする

TortoiseHgはmercurialのサーバ機能を内蔵しているので、そのままリポジトリサーバになります。

TortoiseHgをリポジトリサーバにする

1.Workbenchを起動して適当なリポジトリを選択後、メニューから「リポジトリ」「ウェブサーバー」を選択します。

2.この状態ですでに8000番ポートでサーバーが起動しています。とりあえず停止します。

3.選択したリポジトリがルートで起動しているので、編集ボタンをクリックして名前を付けます。

4.プラスボタンを押して公開するリポジトリを追加します。

5.設定ファイルを保存します。

6.さて、この状態でサーバを起動してアクセスしてみましょう。

複数のリポジトリが公開できました。

アクセス制限する(Apacheを利用)

TortoiseHgでサーバを起動した時点では誰でもpush出来てしまう危険な状態になっています。アクセス制限を設定していきます。

1.TortoiseHg側でアクセス制限を行う。
TortoiseHgの設定で「ファイルを開く」を選択します。ここでは次の設定を行います。

  • (webサーバのsslの設定はこの記事の範囲外なので)一旦ssl以外でpush出来るようにします。
    • ちゃんと運用する場合は(apache側も含め)sslの設定をしてください。
  • 127.0.0.1からのみアクセス出来るように設定します。

[web]
#push_ssl = True
push_ssl = False
address = 127.0.0.1

2.Apache側の設定を行う
Windows版のApacheをインストールして、Aapache側でアクセス制限を行います。リポジトリサーバーへはApache経由でアクセスします。
Apacheで認証を行っているのでhtpasswd以外にLDAP等も使えます。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Listen 8080
NameVirtualHost *:8080

<VirtualHost *:8080>
  ServerName hg.example.com # 公開するサーバ名
  ProxyPass        / http://localhost:8000/
  ProxyPassReverse / http://localhost:8000/

  <Location /blockdiag> # /blockdiagのみアクセス制限を行う。
    AuthType Basic
    AuthName "Mercurial Repository Server"
    AuthUserFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/blockdiag-passwords" # htpasswdのファイル
    Require user troter # アクセスを許可するユーザ名を列挙
  </Location>
</VirtualHost>

まとめ

TortoiseHgとApacheを使ってWindowsマシンをリポジトリサーバーにする方法を紹介しました。Windowsでどうしてもサーバを立てなければならない場合は参考にしてみてください。