Gitは多機能だけど、なんかシンプルさが足りない。Mercurialを使ってる。
mercurialはGITのライバル
Mercurialとは,Pythonで実装された,分散リポジトリ形式の構成管理ツールで,OpenJDK や Mozilla,OpenSolaris 等を始めとする多くのプロジェクトで採用されています。
Mercurialではじめる分散構成管理(藤原克則)
既にLinuxカーネルの原著作者であるLinus Torvaldsも同様の目的でGitの開発を開始していたが、MackallはLinux kernel Mailing List上でMercurialの優位性(データを差分の形式で保持することにより、リポジトリのサイズを節約している、等)を訴え、Torvaldsと論争を繰り広げたこともあった。
(wikipedia)
SVNやgithubのようにブラウジングしたい。
SVNのようにディレクトリ構造を持って、ブラウザでみることが出来ると便利なんだけど。
hgはコマンドがSubversionに類似でわかりやすい。けど、コマンドたたかないと、みられない。
つまり、コマンド覚える必要がある。面倒だ。敷居を下げたい。
hgweb.cgiというツールが用意されている。
hgwebdirをつかうと、レポジトリの中が見渡せて便利。
hgwebdirの環境
python mercurial 1.0x以上 mod_cgi
mercurialインストール
Ubuntuにインストール
sudo aptitude install python sudo aptitude install python-dev sudo aptitude install python-setuptools # ← easy_install です。 sudo easy_install -U mercurial
hgwebdir.cgiをインストール
hgwebdir.cgiを入手
インストールファイルから
sudo updatedb locate hgweb |grep cgi /usr/share/doc/mercurial/examples/hgwebdir.cgi /usr/share/doc/mercurial/examples/hgwebdir.fcgi cp /usr/share/doc/mercurial/examples/hgwebdir.cgi /var/www/hg/
サーバーから
wget http://www.selenic.com/repo/hg-stable/raw-file/tip/hgwebdir.cgi
.htaccessを追加しCGIを起動する。
.htaccess
Options +ExecCGI AddHandler cgi-script .cgi Order Allow,Deny Allow from all DirectoryIndex ./hgwebdir.cgi
hgwebdirの基本設定。
hgwebdirの基本設定はレポジトリの.hg/hgrcと、hgweb.confの二つで行います。
hgweb.conf
「*」(アスタリスク)を使うことで複数のレポジトリを簡単に登録できて楽チン。
hgweb.config
[paths] trunk = /var/www/repos/trunk/*
レポジトリを作る。
cd /var/www/repos/trunk mkdir files cd files hg init
レポジトリへPUSH出来るようにする。
vim ./trunk/files/.hg/hgrc
これで、各レポジトリ毎に設定する。
.hg/hgrc
1 [web] 2 push_ssl= false 3 allow_push = * 4
ZIPでレポジトリをwgetできるようにする。
.hg/hgrc
1 [web] 2 push_ssl= false 3 allow_push = * 4 allow_archive = zip,gz,bz2
レポジトリの追加。
hgwebdir.cgiで管理するレポジトリの追加。
hgweb.config
[paths] trunk = /var/www/repos/trunk/* takuya = /home/takuya/public/repos/
"*"を使うと、まとめて登録できるから楽です。
複数レポジトリ登録した結果。
`-- trunk |-- files | `-- .hg/hgrc |-- bookmacro | `-- .hg/hgrc |-- emeditor | `-- .hg/hgrc `-- test