利用python實現svn自動發送郵件功能

利用python實現svn自動發送郵件功能

  1. Hooks

Hookssvn庫下存放腳本的目錄,可以利用這些腳本在svn執行相應操作時實現發送郵件提醒、自動備份版本庫等功能(本文以發送郵件提醒爲例),部分腳本名稱及含義如下:

Post-commit.tmpl            commit之後執行此腳本

Pre-commit.tmpl             commit之前執行此腳本

我們要實現用戶commit之後的自動提醒功能,僅用到post-commit.tmpl,具體修改步驟如下:

mv post-commit.tmpl post-commit    去掉臨時腳本後綴

vi post-commit                註釋末尾兩行並添加如下內容

REPOS="$1"

REV="$2"

#commit-email.pl "$REPOS" "$REV" [email protected]

#log-commit.py --repository "$REPOS" --revision "$REV"

/home/svn/1111_doc/hooks/mailer/mailer.py commit "$REPOS" "$REV" /home/svn/1111_doc/conf/mailer.conf

#這句意思是利用mailer.py這個python程序及mailer.conf這個郵件配置文件在commit後,將“庫名”“版本”發送至mailer.conf裏配置好的郵箱,注意:項目路徑需要根據實際情況修改

#log-commit.py --repository "$REPOS" --revision "$REV"

if [ $? -ne 0 ]; then

        echo "failure to mail.py commit $REPOS $REV" >> /home/svn/1111_doc/svnmail.log

#如果發送失敗將日誌發送到svnmail.log,自己創建即可,注意更改爲svn的用戶權限

fi

  1. Svntools

上文腳本中涉及的mailer.pymailer.conf文件實際上是svn自帶工具,具體目錄如下:

/home/svn/tmp/subversion-1.5.6/tools/hook-scripts/mailer/     (僅供參考)

該目錄下有2個文件,分別爲mailer.config.examplemailer.py,將其分別放入對應目錄下並授予svn用戶權限:

cp –R ./mailer /home/svn/1111_doc/hooks

chown –R apache:apache mailer

cd mailer/

cp mailer.config.example /home/svn/1111_doc/conf/mailer.conf

修改mailer.conf配置文件,根據實際情況修改如下高亮部分:

# This option specifies the hostname for delivery via SMTP.

smtp_hostname = smtp.xxxx.com.cn

 

# Username and password for SMTP servers requiring authorisation.

smtp_username = [email protected]

smtp_password = xxxxxxxx

# the from address, you can use "from_addr =".

from_addr = [email protected]

 

# The default To: addresses for message.  One or more addresses,

# separated by whitespace (no commas).

# NOTE: If you want to use a different character for separating the

#       addresses put it in front of the addresses included in square

#       brackets '[ ]'.

to_addr = [email protected]

  1. python導入庫文件

測試發送郵件時可能會報錯:you need version 1.5.0 or better of the subversion python bindings,此時需要進入python,導入svn相關的文件即可

python

>>>import svn.fs

>>>import svn.delta

>>>import svn.repos

>>>import svn.core

進行測試時可以用如下命令,指定庫及特定版本,測試郵件是否發送成功(每行之間都是一個空格):

/home/svn/1111_doc/hooks/mailer/mailer.py  commit /home/svn/1111_doc  10 /home/svn/1111_doc/conf/mailer.conf

之後檢查是否收到郵件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章