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:即可。

相关文章推荐

日语学习之新版初级标准日本语-7 李さんは 毎日 コーヒーを 飲みます

基本课文 1、李さんは 毎日 コーヒーを 飲みます。 2、李さんは 図書館で 勉強します。 3、わたしは 毎朝 パンか お粥を 食べます。 4、コーラと ケーキを ください。 A ...

日本語編集ツール さくら

  • 2017年01月14日 15:43
  • 2.72MB
  • 下载

[080816]ルーデシア~Spidering with Scraping~【日文硬盘版】(带日本语启动补丁)

ブランド talestune  発売日 2008-08-16  画 上田梦人  シナリオ 竹田  音楽 白夜(音楽アーティスト  中央値 80  平均値 77  データ数 36  ...

JavaでGmailのSMTPサーバを使ってメール送信

JavaでGmailのSMTPサーバを使ってメール送信 javamail-基于SMTP的JAVA邮件发送程序!  正好遇到这方面的问题,写出来,分享一下。 这个程序没有使用Jav...

日语学习之新版初级标准日本语-16 ホテルの部屋は広くて明るいです

基本课文 1、テルの 部屋は 広くて 明るいです。 2、この コンピュータの 操作は 簡単で 便利です。 3、森さんは 車を もって います。 4、3か月 パソコンを 練習しましたが、まで あ...

メール送信文字化け

≫Perlでメール送信 掲示板その他のCGIでメール送信機能を必要とすることは多いと思います。 Perlでメール送信するための技術情報をメモしておきます。 いまどき、迷惑メール送信はケー...

日语学习之新版初级标准日本语-13 机の上に本が三冊あります

基本课文 1、机の 上に 本が 三冊 あります。 2、李さんは 毎日 七時間 働きます。 3、李さんは 一週間に 二回 プールへ 行きます。 4、午後 郵便局へ 荷物を 出しに 行...

[150424]克洛的时钟(クロノクロック)【日文硬盘版】(带全CG存档+日本语启动补丁+日文攻略)

want  static tinypic 前言: 这次的时空穿越是能确切改变未来的哦~也不存在什么绝症晚期的罕见欢乐穿越作?  第一女主的风格能不能改改,连续3作都一个脸(╯‵□′)╯︵┻...

日语学习之新版初级标准日本语-1 李さんは 中国人です。

1、名は名です 相当于汉语的“~是~”。“~は”是主语部分。“~です”是谓语部分。助词“は”用于提示主题,读做“わ”。 李さんは 中国人です。(小李是中国人。) わたしは 日本人です。(我是...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mailer.py でのコミットメール送信 (日本語対応)
举报原因:
原因补充:

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