Mercurial - 分散バージョン管理

Subversionを使っていたんだけど,あるところでネットワークに接続しない環境でもcommitしたい場合があるので,分散バージョン管理を使いたくなった。

分散バージョン管理だと良く聞くのがGitとMercurial。どこかの記事(あとで探そ)が自分的にヒットしたのと,NetbeansのデフォルトがMercurialだったので,Mercurialを使ってみることにする。

インストール

インストールは,FreeBSDなので,/usr/ports/devel/mercurialでmake, make installで終了。

設定

ただ使うだけならインストールした時点で使えるが,サーバで集中管理+クライアントで分散管理としたいので下記を参考に設定してみる。

HTTP公開

MercurialはサーバにPushするためにSSHとHTTP経由が使える(らしい)。
今回は,HTTP経由を選択した。

HTTP経由で公開するには,hgweb.cgiを公開する必要がある。
portsでインストールした場合,hgweb.cgiは,
/usr/local/share/mercurial/www
にあるので,webサーバのcgiにコピーして使う。
ちなみに/usr/local/share/mercurial/contribにはhgrcとかのサンプルもあった。(テストインストールの時は気がつかなかったorz...)

今回は,repositoryを/usr/local/mercurial/reposに置いてみる。
mercurialは,configファイルとhgrcでいろいろ制御できるらしい。configファイルは,.configとし,cgi-binにhgweb.cgiと一緒に置くことにする。

.config

[collections]
/path/to/repos = /path/to/repos

と記述し,複数のリポジトリを公開できるようにする。

HTTP公開でURLの細工

普通にApacheで公開すると

http://YOUR-DOMAIN or YOUR-IPADDRESS/cgi-bin/hgweb.cgi
http://YOUR-DOMAIN or YOUR-IPADDRESS/cgi-bin/hgweb.cgi/TEST-PROJ

とかでアクセスするんだけど,ちょっと長いし,なんかイケていない気がする。

そこで,mod_rewriteを使う方法を分散型バージョン管理Mercurialをインストールした azurebird4uさんの所で見つけてやってみた。

http://YOUR-DOMAIN or YOUR-IPADDRESS/hg

でアクセスすると,アクセス後のURLは

http://YOUR-DOMAIN or YOUR-IPADDRESS/cgi-bin/hgweb.cgi

となってしまう。 何か足りないのかとも思って深堀しようかともおもったんだけど,次の方法を見つけて上手くいっている。

ScriptAliasでhgweb.cgiまでを書いてしまう。

#vi httpd.conf
   : 
 ScriptAlias /cgi-bin/ "/PATH/TO/cgi-bin/"
 ScriptAlias /hg       "/PATH/TO/cgi-bin/hgweb.cgi"
   :

とすると

http://YOUR-DOMAIN or YOUR-IPADDRESS/hg
http://YOUR-DOMAIN or YOUR-IPADDRESS/hg/TEST-PROJ

としてアクセスすることが出来る。

つづく 2011-02-18

SSL true or false

.hgrc

BASIC Authentication

TortoiseHG

使い方



Last-modified: 2022-05-05 (木) 22:27:10