Mercurialを使ってみた

1.0が出たので使ってみました。
http://www.selenic.com/mercurial/wiki/index.cgi/Mercurial

Windowsクライアント

Windows上は

http://mercurial.berkwood.com/

ここにありますがお勧めは亀さんですね

http://www.selenic.com/mercurial/wiki/index.cgi/TortoiseHg

両方入れておいたほうがいいと思います。

サーバー側

サーバーはCORESERVER(XREA)で試しました。

以下コマンドです

wget http://www.selenic.com/mercurial/release/mercurial-1.0.tar.gz
tar zxvf mercurial-1.0.tar.gz
cd mercurial-1.0/
HOME=$HOME/local make install-home-bin

上記でダウンロードから、インストールまで。本当はinstall-homeなのですがdocでエラーが発生するので、バイナリだけインストールしました。

これで /virtual/user_name/local にインストールされます。

vi .bash_profile 

環境変数を追加します。

export PATH=$PATH:~/local/bin
export PYTHONPATH=~/local/lib/python

こんな感じで追加します。

cd local
mkdir var
cd var
mkdir testrepo
cd testrepo/
hg init

local以下にvarを作ってレポジトリを作成。

vi .hg/hgrc

設定ファイルの編集

[web]
push_ssl = false
allow_push = *

BASIC認証を入れた場合には allow_push の場所にユーザー名をセットします。これでSSLを利用していないアクセスと、だれでも更新が可能になります。

cd
cd mercurial-1.0/
mkdir ~/public_html/user_name/testrepo
cp hgweb.cgi ~/public_html/user_name/testrepo/
cd ~/public_html/user_name/testrepo/
vi hgweb.cgi 
chmod 755 hgweb.cgi 

公開用のフォルダを作成し、処理用のCGIをコピーして編集します。

import sys
sys.path.insert(0, "/virtual/user_name/local/lib/python")

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

application = hgweb("/virtual/user_name/local/var/testrepo", "repository name")

上記の設定をしてCGIにアクセスしてみて、ページが表示されれば完了です。エラーが出た場合にはCGIの拡張子をcgidに変更することでエラーを見ることができます。

クライアントからのアクセス

Windows上のコマンドラインから以下の操作をします

hg clone http://domainname/testrepo/hgweb.cgi testrepo

上記で testrepo フォルダが作成され、リポジトリの内容を取得します。
何かファイルを追加してから、コミットとサーバーへの送信を行います。

hg add
hg commit
hg push

上記でファイルの追加、コミット、サーバーへの送信になります。
いろいろ触ったところ、10M以上のファイルは警告がでます。出ても送信できるみたいですが、CORESERVERの場合には大きすぎるファイルの場合にはエラーで落ちてしまいます。

この辺はレンタルサーバーのCGIで動かす限界かもしれません。
あまり大きなファイルを転送しないで、プログラムだけだったら十分使える可能性があります。

現状のところSSH経由でSVNMercurialを使った方が安定しているかもしれません。