svnmailer etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
svnmailer etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

19 Kasım 2012 Pazartesi

svnmailer ile her commit sonrası mail gönderme işlemi

 svnmailer programı her bir svn commit sonrasında belirlenen e-postalara otomatik olarak mail gönderen bir yazılımdır.

Web sitesi: http://opensource.perlig.de/svnmailer/
RPM paketleri URL: http://pkgs.repoforge.org/svnmailer 

Çalışma mantığı: Her bir svn projesinde(burada svnprojem1) conf  ve hook dizinleri bulunmaktadır.
hooks dizininde post-commit dosyası sayesinde her bir commit işleminden sonra istenilen komutlar çalıştırılır. post-commit dosyasınının içerisine svn-mailer komutu tanımlanır.
svn-mailer için conf dizininde svn-mailer.conf isimli bir dosya oluşturulur. svn-mailer bu dosyadaki değerlere göre (from,to,subject vs) ilgili yerlere e-posta gönderir.

Kurulum: CentOS 5 üzerine kurulum için aşağıdaki dosya çekilir.

# wget http://pkgs.repoforge.org/svnmailer/svnmailer-1.0.8-2.el5.rf.noarch.rpm
# rpm -ivh svnmailer-1.0.8-2.el5.rf.noarch.rpm

[root@hq svnprojem1]# ls
conf  dav  db  format  hooks  locks  README.txt


hooks dizininde post-commit dosyası yoksa oluşturulur ve izinleri 755 yapılır. Bu dosyanın içeriği aşağıdaki gibidir.

# cat hooks/post-commit
#!/bin/bash

REPOS="$1"
REV="$2"

/usr/bin/svn-mailer --commit \
    --config ${REPOS}/conf/svn-mailer.conf \
    --repository "${REPOS}" \
    --revision "${REV}" &

#


# cat conf/svn-mailer.conf
[general]
#config_charset = iso-8859-1 

sendmail_command = /usr/sbin/sendmail


[defaults]
from_addr = svncommit@mydomain.com
to_addr = arge@mydomain.com
browser_base_url = websvn http://192.168.0.100/websvn/listing.php?repname=svnprojem1
mail_type = multipart type=text/x-diff
commit_subject_prefix = SVN PROJEM1 ::
generate_diffs =  add copy modify propchange



sendmail_command: Sistemde mail göndermek için kullanılan sendmail komutunun yolunu belirtir.
from_addr: mailin kimden geliyormuş gibi gönderileceğini belirtir.
to_addr: mailin  alıcısını belirtir.
browser_base_url: Eğer websvn(http://websvn.tigris.org/)  kurulu ise kullanıcıya atılan mailin gövdesine link ekler.
commit_subject_prefix: Mailin subject kısmına eklenecek prefix değerini belirtir.
generate_diffs: Hangi operasyonlar sonrasında yapılan değişikliğin diff olarak gönderileceğini belirtir. Buradaki yapılandırmaya göre ekleme,kopyalama,değişiklik ve dosya tanımlardında bir değişiklik(izin,sahiplik vs) durumunda maile bu farklar eklenti olarak iliştiririlir. Çok büyük değişiklik durumunda e-posta boyutu artacağı için bu değerin none yapılması tavsiye edilir.


Örnek mail aşağıdaki gibidir:

From: svncommit@surgate.com
To: arge@surgate.com
Subject: SVN SVNPROJEM1:: r2566 - /trunk/ChangeLog
 
Author: ismail.yenigul
Date: Mon Nov  5 15:38:03 2012
New Revision: 2566

URL: http://192.168.0.100/websvn/listing.php?sc=1&rev=2566&repname=svnprojem1
Log:
New version

Modified:
    trunk/ChangeLog
 

Modified: trunk/ChangeLog
URL: http://192.168.0.100/websvn/diff.php?path=/trunk/ChangeLog&rev=2566&repname=svnprojem1
==============================================================================
--- trunk/ChangeLog (original)
+++ trunk/ChangeLog Mon Nov 19 17:06:31 2012
@@ -1,5 +1,5 @@
 2012-19-11 16:59
- * New version of software
+ * Version 1.2