サイトマップ 連絡先 トップに戻る 最初に戻る 前に戻る 次へ進む
$Date: 2018-07-07 06:49:13 +0900 (2018/07/07 (土)) $
$Revision: 1347 $

mailer.py でのコミットメール送信 (日本語対応)

概要

Subversion を使っているとコミットメールを送信すると便利です。 post-commit フックスクリプトでリポジトリに直接アクセスして 差分をメール送信することが可能です。このページでは mailer.py という コミットメール送信ツールを紹介します。

セットアップ手順

入手先

mailer.py は以下から入手可能です。 http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/mailer

Subversion のソースコード配布ファイルの中にも含まれています。

Subversion Python bindings のインストール

mailer.py は Subversion Python bindings を使っているので Python bindings をインストールする必要があります。

参照

Python bindings をインストールしたら、mailer.conf という設定ファイルを 編集する必要があります。mailer.conf.example という設定ファイルのサンプルが あるのでこれを元に編集すれば OK です。

メール送信先等の設定

mailer.conf.example をベースに mailer.conf を作成し、mailer.conf を 編集して、送信先メールアドレス等を設定します。

日本語のファイルの文字化け対策

リポジトリの中身のファイルが、Shift JIS や EUC 等 UTF8 以外の文字コードを 使っているとコミットメールが文字化けしてしまいます。 なので文字化けしないようにする必要があります。

mailer.py はメールを送信するとき、ファイルの中身が UTF8 である前提で 動作するようになっています。

ファイルの中身が Shift-JIS や EUC であれば以下のようになり文字化けしてしまいます。 幸いにも、mailer.py ではファイルの差分を表示させるときのコマンドを 設定ファイルで変更できるようになっています。メールで送信する前に nkf に食わせて UTF8 に統一してしまえば文字化けすることはありません。

ただしメールソフトが UTF8 のメールに対応していないと、コミットメールは 文字化けして読めません

mailer.conf の diff プログラムの指定

mailer.conf.example には general というセクションがあり、そこに diff という変数があります。これを編集して nkf の処理を追加します。 diff に直接 nkf を指定することができればいいのですが、パイプでつないで 起動するということができないようなので、nkf を呼び出すための perl スクリプトを作成することにします。

変更前

diff = /usr/bin/diff -u -L %(label_from)s -L %(label_to)s %(from)s %(to)s
変更後
diff = /var/svn/diff.pl -u -L %(label_from)s -L %(label_to)s %(from)s %(to)s

diff.pl (渡された引数を /usr/bin/diff にそのまま渡して、nkf をパイプで つないで呼び出すスクリプト)
#!/usr/bin/perl

$diff = "/usr/bin/diff";
$nkf  = "/usr/bin/nkf";

$cmd = "$diff ";
foreach $arg ( @ARGV )
{
	$cmd = "$cmd \"$arg\"";
}
$cmd = "$cmd | $nkf --utf8";
system $cmd;

mailer.py の使い方

$ ./mailer.py --help
USAGE: mailer.py commit      REPOS REVISION [CONFIG-FILE]
       mailer.py propchange  REPOS REVISION AUTHOR REVPROPNAME [CONFIG-FILE]
       mailer.py propchange2 REPOS REVISION AUTHOR REVPROPNAME ACTION [CONFIG-FILE]
       mailer.py lock        REPOS AUTHOR [CONFIG-FILE]
       mailer.py unlock      REPOS AUTHOR [CONFIG-FILE]

If no CONFIG-FILE is provided, the script will first search for a mailer.conf
file in REPOS/conf/.  Failing that, it will search the directory in which
the script itself resides.

ACTION was added as a fifth argument to the post-revprop-change hook
in Subversion 1.2.0.  Its value is one of 'A', 'M' or 'D' to indicate
if the property was added, modified or deleted, respectively.
コミットメールを送るには、設定ファイルを編集して
mailer.py commit      REPOS REVISION [CONFIG-FILE]
の構文に従って mailer.py を実行すれば OK なのです

post-commit の設定