Archive for 2月, 2011

MercrialのリポジトリのApacheでの公開とTracとの連携

Kanonでは、自動的にMercurialの設定を行っていますが、Mercurialの設定をまじめにやろうとすると結構面倒です。ここでは、Kanonの実装を例にMercurialのリポジトリをWebで公開する方法とTracとの連携について紹介します。

Kanonを使わないけどTracを使ってMercurialリポジトリを使いたい人の参考になればと思います。

Apacheの設定

まず、Webでリポジトリを公開するためのWSGIファイルを作成します。Kanonでは、/opt/kanon/lib/cgi-bin/hgweb.wsgiに置かれています。

config = "/etc/opt/kanon/hgweb.config"

import os
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
os.environ["HGENCODING"] = "UTF-8"

from mercurial.hgweb import hgweb, hgwebdir, wsgicgi
application = hgwebdir(config)

次にhgwebの設定ファイルを作成します。Kanonでは/etc/opt/kanon/hgweb.configに置かれています。

[web]
allow_archive = gz, zip, bz2
style = coal
allow_push = *
push_ssl = false

[collections]
/var/opt/kanon/hg = /var/opt/kanon/hg

/var/opt/kanon/hgディレクトリに複数のhgリポジトリが配置されるように設定いますので。このディレクトリにMercurailのリポジトリを作成すればリポジトリが見れるようになります。

Apacheに作成した、WSGIを読み込む設定をhttpd.confで行います。

...
WSGIScriptAlias /hg /opt/kanon/lib/cgi-bin/hgweb.wsgi
<Location /hg>
        WSGIApplicationGroup %{GLOBAL}
        AuthType Digest
        AuthName kanon
        AuthUserFile /etc/opt/kanon/kanon_users.htdigest
        Require valid-user
</Location>
...

これで、Apache上でMercurialのリポジトリを中央リポジトリとして見ることができます。

Tracのリポジトリブラウザの設定

次は、Tracのリポジトリブラウザの設定を行ってみましょう。

まず、Mercurialプラグインをインストールします。ルートユーザで次のコマンドを実行してください。

# easy_install http://svn.edgewall.com/repos/trac/plugins/0.12/mercurial-plugin

trac.iniには次の設定を追加します。コンポーネントを有効化し、リポジトリの設定を行います。

[components]
...
tracext.hg.backend.* = enabled
...

[trac]
...
repository_dir = /var/opt/kanon/hg/KanonConductor
repository_sync_per_request = (default)
repository_type = hg
...

これで、TracのリポジトリブラウザでMercurialのリポジトリを見ることができるようになりました。ただし、リポジトリが空の場合、エラーメッセージがでます。エラーが出る場合は、リポジトリに何かコミットしてみてください。

なお、Trac Mercurialプラグインはマルチリポジトリに対応しています。Tracプロジェクトにリポジトリを追加したい場合は、管理画面のリポジトリから行ってください。

Tracのコミットフックの設定

Tracでは、コミット時にrefs #21や、fixed #23と記述することにより、チケットへコミットメッセージを追加したり、コミットによりチケットをクローズすることができます。ここでは、コミットフックの説明をします。

まず、コミットフックを利用するにはtrac.iniに次の設定を記述し、コミットアップデートを有効にします。

[components]
tracopt.ticket.commit_updater.* = enabled

次にコミットフックを設定したいhgリポジトリの.hg/hgrcファイルでコミットフックの設定を行います。hgrcファイルはサーバ上のファイルを直接編集します。

[hooks]
commit = /opt/kanon/bin/trac-commit-hook kanon "(default)" $HG_NODE
incoming = /opt/kanon/bin/trac-commit-hook kanon "(default)" $HG_NODE

上記のコミットフックから呼ばれるスクリプtrac-commit-hookトは次のように記述します。

#!/bin/bash

KANON_TRACPATH=/var/opt/kanon/trac
KANON_HOME=/opt/kanon
export PYTHONPATH=$KANON_HOME/lib/python2.6:$KANON_HOME/lib/python2.6/site-packages
LANG=C

/opt/kanon/bin/trac-admin $KANON_TRACPATH/$1 changeset added "$2" "$3"

ここで、LANG=Cとしないと、日本語が文字化けするので注意してください。

日本語ファイル名を使うときのクライアントの設定

※この設定はクライアント側の設定のため、Kanonでは設定してくれません。各自で設定してください。

Windows環境とLinux環境が混在するような環境では、日本語のファイル名が文字化けします。hg-fixutf8プラグインを利用すると、ファイル名の文字化け問題を解決できます。hg-fixutf8はいくつかフォークが存在しますが、下記のバージョンが一番よくメンテナンスされているようです。

上記のリポジトリからエクステンションを取得、適当なディレクトリにコピーし、.hg/hgrcファイルに次のように記述します。

[extensions]
fixutf8=C:/Progam Files (x86)/Mercurial//hg-fixutf8/fixutf8.py

これで、混在環境で文字化けをしなくなります。なお、win32mbcsエクステンションは無効にしておいてください。Windows環境で日本語ファイル名を利用する場合はwin32mbcsを有効にしておけばよいという記述がWeb上で見受けられますが、win32mbcsを用いた方法では、リポジトリブラウザやhgwebでアクセスしたときにファイル名が文字化けするので注意してください。

マルチリポジトリの扱い

Tracの管理画面からもMercurialリポジトリを追加することができます。追加されたリポジトリへのリンクを貼るには、Wiki注に[バージョン番号/リポジトリ名]と記入します。例えば、KanonConductorというリポジトリ名のリポジトリのチェンジセットへリンクを貼るには次のようにします。

[123/KanonConductor]    (リビジョン番号を利用した場合)
[3d1c15c7cefa/KanonConductor]    (ハッシュを利用した場合)

まとめ

これだけ設定すると、Apache上でのMercurialリポジトリの公開とTracとの連携を行うことができます。色々設定項目がありますが、Kanonはこれらの面倒な設定を自動的に行ってくれます。文字化けを回避するノウハウなどもコンフィギュレーションに組み込まれていますので、試行錯誤して悩むこともなくなると思います。

TracLightningの今後について

KanonはTracLightningの後継としてリリースしましたが、一部の方からTracLightningの開発はどうなるのかという心配の声をいただいています。ユーザの皆様を混乱させているようなので、一度説明をしておきたいと思います。

フォークではありません

KanonはTracLightningのフォークではありません。何故なら、KanonはTracLightningのメインの開発者自身が新たに起こしたプロジェクトであり、プロジェクトの運営方針の違いにより仲違いにより生まれたプロジェクトではないからです。

WindowsとLinuxの棲み分け

現在のKanonのメインコンポーネントであるKanon Naiagara/Kanon AllegroはOSとしてLinux(将来的にはMacOSや他のUnixも)を中心にサポートを行い、TracLightningはWindowsのみのサポートとなります。ここに、

  • Linuxで使いたい人はKanonを
  • Windowsを使いたい人はTracLightningを

という棲み分けをすることができます。KanonとTracLightningは決して競合するプロダクトではありません。

共通化されたコンポーネント

Kanon Niagara/AllegroはTrac関連の機能についてはTracLightningと多くのコンポーネントを共有しており、TracLightningも従来通り開発していきます。Kanonの進化はTracLightningの進化にそのまま繋がります。

誰でも参加できるコミュニティによる運営

TracLightningは開発コミュニティにより開発されています。また、開発状況が不満であれば、誰も開発に参加することができます。プロジェクト運営自身に不満があればフォークすることも可能です。

最後に

勉強会などでメインの開発者自身が疲れてきたといっていますが、これに関しては紛れもない事実です。わたしはTracLightningは4年以上開発を続けていますが、同じプロジェクトで同じことを4年以上続けていて面白いと感じるでしょうか?

しかしながら、TracLightningはわたしが考えている以上に多くの方にご利用いただき、また、ご評価されていることに気づきました。できる限りTracLightningも今後もリリースしていきたいと思っていますので、今後ともよろしくお願いいたします。

また、ユーザのみなさんにも導入して便利だと思ったらtwitterでつぶやいたり、ブログに記事を書いたりして頂ければ開発者の励みになります。TracLightningは無償で、オープンソースソフトウェアとして提供していますが、その代償として一言でもみなさんから感謝の言葉を頂けると幸いです。もちろん不満な点もあると思いますが、その場合は、開発者の目の届くTracLighntingのsf.jpのチケットシステムまでご登録頂ければと思います。

以上、よろしくお願いいたします。

Debian GNU/kFreeBSDのサポートの廃止について

Kanonプロジェクトでは、現在Jenkinsの組み込みを検討しています。

Jenkinsの動作には、OpenJDKが必要となりますが、Debian GNU/kFreeBSDではOpenJDKがサポートされておらずJenkinsを動作させることができません。Debian GNU/kFreeBSDのJavaのランタイムの問題が開発するまでは、一旦Debian GNU/kFreeBSDのサポートを外すこととしました。

Debian GNU/kFreeBSDのファンの方には申し訳ありませんが、なにとぞご理解頂ける様よろしくお願いいたします。

Kanon Projectオンライン版公開

※ Kanon Projectはバグが多いため、一旦正式プロジェクトから格下げしました。まだ、α版レベルであることを承知の上でお使いください。

ガントチャートでスケジュール管理ができるKanon Projectのオンライン版(JavaWebスタート版)を公開しました。オンライン版を実行するには、ここをクリックしてください。

なお、Kanon Projectはまだテスト段階です。PODファイルの読み書きに失敗するバグがあります。ご注意ください。なお、ソースコードは、Kanon Trackerから取得することができます。開発者(ラボメン)も募集していますで、興味がある方は連絡ください。

Kanon Project

Kanon Project

Kanon Projectの詳細については、Kanon Projectとは?をご覧ください。

Kanon Allegro/Naiagaraのダウンロードとインストール

はじめまして!! TracLightningの後継ソフトウェアとしてKanonをリリースしました。ここでは、Kanonを利用したチケットシステムとバージョン管理システムの構築方法をご紹介します。

準備

Kanon Allegro/Naiagaraを利用するには、まずLinux環境を構築する必要があります。下記のOSを予めインストールしておいてください。

  • RedHat Enterprise Linux 6.0
  • Oracle Enterprise Linux 6.0
  • Ubuntu Server 10.10
  • Debian GNU/Linux

インストーラの取得

OSのインストールが完了したら、KanonのMercurialリポジトリから最新のインストーラを取得してください。Mercurialをインストールしていない人は、リポジトリの右辺りにあるzip/tgzなどのアーカイブを取得してください。取得したインストーラを適当なディレクトリに解凍します。

インストール

Kanonのインストールは、解凍したディレクトリで、ルートユーザになって、

# ./kanon-setup

と実行します。これでKanonのインストールは終了です。Kanonのインストーラが自動的に必要なパッケージ、Pythonのモジュールなどを取得してインストールしてくれます。RHELやOELをご利用の場合は、yumの設定でDVDのメディアリポジトリの設定を行う必要があるので注意してください。

プロキシ環境下での注意

プロキシ環境下でインストールする場合は、http_proxyとhttps_proxy、それからSubversionの設定をしておいてください。

Subversionの設定は、/root/.subversion/serversに下記の記述を追加します。

[global]
http-proxy-host = <プロキシ>
http-proxy-port = <ポート>
http-proxy-username = <ユーザ名>
http-proxy-password = <パスワード>

http_proxyとhttps_proxyはシェル上で下記のように入力します。

# export http_proxy=http://[ユーザ名]:[パスワード]@proxyserver:port/
# export https_proxy=http://(同上)

プロジェクトの作成

インストールが完了したら下記のコマンドでプロジェクトの作成を行います。

#/opt/kanon/bin/kanon-create-project

プロジェクトの作成については、別のエントリで紹介します。