View All Posts. MiCHiLU.com powered by Django ;-)

[Python]: Subversionコミット時メール送信 by Python

Yamashitaさんの記事 を参考に、 svn commit でメールが飛ぶようにしてみました。 幸いなことに ruby が入っていなかったので、 Python で書き直す!

と、このような感じ。

hooks/email-send.py

#!/bin/env python
# -*- coding: utf-8 -*-
import sys
import commands
from email.Header import Header
import smtplib

args = {}
args["REPOS"] = sys.argv[1]
args["REV"] = sys.argv[2]
CMD = "/usr/bin/svnlook %s " + "%(REPOS)s -r %(REV)s" % args

cmds = ("author", "date", "changed", "log", "diff",)
args.update(dict([(cmd, commands.getoutput(CMD % cmd)) for cmd in cmds]))

fromaddr = "svn-admin@hoge.com"
toaddrs = "member1@hoge.com, member2@hoge.com"
body = """Subversion committed to %(REPOS)s %(REV)s
┌────────────────────────────┐
 更新者 :  %(author)s
 更新日時:  %(date)s
└────────────────────────────┘

Changed:                      [U:修正,A:追加,D:削除]
--------------------------------------------------------
%(changed)s

Log:
--------------------------------------------------------
%(log)s

http://www.hoge.com/trac/sampleproject/changeset/%(REV)s
""" % args

body = unicode(body, "utf8").encode('iso-2022-jp','replace')

title = unicode("Subversion committed to %(REPOS)s %(REV)s" % args, "utf8")
subject = Header(title.encode('iso-2022-jp','replace'), 'iso-2022-jp')

msg = """\
From: %s
To: %s
Subject: %s
Content-Type: text/plain; charset = ISO-2022-JP

%s
""" % (fromaddr, toaddrs, subject, body)

server = smtplib.SMTP("localhost")
server.sendmail(fromaddr, toaddrs, msg)
server.quit()
Tue, 10 Apr 2007 01:29:44 +0900 source edit
Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.1 Japan License.
View All Posts. MiCHiLU.com powered by Django ;-)