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

转载 2012年01月26日 13:07:01

本文来自:http://www.asahi-net.or.jp/~iu9m-tcym/svndoc/svn_mailer_py.html

概要

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

セットアップ手順

  • mailer.py を入手する
  • Subversion Python bindings をインストールする
  • mailer.conf でメール送信先等の設定を行う
  • 日本語文字化け対策
    • diff.pl を作成する
    • mailer.conf の diff を編集する
  • post-commit を作成する

入手先

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 を編集して、送信先メールアドレス等を設定します。
  • mail_command をコメントアウトする または smtp_hostname を設定する
  • from_addr に有効なメールアドレスを設定する
  • to_addr に有効なメールアドレスを設定する

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

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

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

ファイルの中身が Shift-JIS や EUC であれば以下のようになり文字化けしてしまいます。
  • ログメッセージ: UTF8
  • ファイルの中身(差分): Shift-JIS or EUC
  • Content-Type: UTF8
幸いにも、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 の設定

  • post-commit を mailer.py と mailer.conf をリポジトリの hooks ディレクトリに置く場合以下の内容で作る。
    REPOS="$1"
    REV="$2"
    
    /usr/bin/python $REPOS/hooks/mailer.py commit "$REPOS" "$REV" &
    
  • post-commit に実行属性をつける。



备注:tools/hoo​k-scripts/mailer/mai​ler.py", line 958. Error: class DifflibDiffContent(): Error: ^ Error: SyntaxError: invalid syntax

这个错误的时候把DifflibDiffContent():改为DifflibDiffContent:即可。

JSP页面跳转中的问题

 页面调转有如下几种方式1   RequestDispatcher.forward()2  response.sendRedirect()3   4  修改HTTP header的Location属性...
  • tsing_dao
  • tsing_dao
  • 2006年07月20日 18:43
  • 1692

AOJ 0033 ball+AOH 0118Property Distribution (DFS)

Description タナカ氏が HW アールの果樹園を残して亡くなりました。果樹園は東西南北方向に H×W の区画に分けられ、区画ごとにリンゴ、カキ、ミカンが植えられています。タナカ氏はこん...
  • aaaaacmer
  • aaaaacmer
  • 2015年06月03日 10:44
  • 706

サーバ送信不要なHTML5による画像切り取りツール作成ツール最新攻略

====================================================== 注:本文源代码点此下载 =============================...
  • javazhuanzai
  • javazhuanzai
  • 2012年01月15日 02:45
  • 224

離任挨拶メール

TO各位  お疲れ様です、xxxxチームのxxです。  本日を持ちまして、当プロジェクトを離任することになりました。  開発チームおよびテストチームの方方には、大変お世話になりました、ありがとう...
  • iameyama
  • iameyama
  • 2012年11月28日 00:46
  • 7369

ActiveX コンポーネントはオブジェクトを作成できません。

Set OraSession = CreateObject("OracleInProcServer.XOraSession")regsvr32.exe oip9.dll
  • sirius_1980
  • sirius_1980
  • 2009年05月19日 17:44
  • 855

攻略和中文翻译之メンアットワーク!4 ~ハンター達よ永遠に~猎人们的永远

唉。。。今天又删动画和游戏了,不过是下ego的游戏还是值得的建议下载メンアットワーク!4 ~ハンター達よ永遠に~ 特別版还是这个特别版好啊,一下子就把1~4代游戏收齐了,MS现在下1~3代的光盘镜像都...
  • luozhuang
  • luozhuang
  • 2008年07月11日 11:55
  • 5938

1リットルの涙:一公升眼泪

1リットルの涙:一公升眼泪var stattitle=/1リットルの涙:一公升眼泪/;在连老人都哈韩的今天,坚持看日剧。不知为什么,那种淡淡的岁月的味道,总给我故乡的感觉。screen.width/2...
  • wecopy
  • wecopy
  • 2007年07月12日 20:00
  • 201

業務システムの開発ドキュメント標準化 第4回:詳細設計書(前半)

機能設計書のドキュメント体系    設計ドキュメント標準「DUNGEON」で定義されている設計工程のアウトプットは表1の通りです。「DUNGEON」では、基本設計書で骨組みを定義...
  • newpiaoyun
  • newpiaoyun
  • 2014年11月27日 12:07
  • 2129

other-IE セキュリティの設定

ツール → インターネット オプション → セキュリティ → 信頼済みサイト → ラベルのカスタマイズ → ActiveX コントロールとプラグイン → スクリプトを実行しても安全だとマークされていな...
  • indieinside
  • indieinside
  • 2012年07月11日 10:56
  • 976

ファイルまたはアセンブリ 'XTR11'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

问题截图: 解决方案:
  • u012250252
  • u012250252
  • 2014年05月28日 14:08
  • 1495
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mailer.py でのコミットメール送信 (日本語対応)
举报原因:
原因补充:

(最多只允许输入30个字)