Быстрый трюк для получения уведомлений об изменении в svn
Потребовалось получать уведомления об изменениях в svn.
В svn есть возможность настраивать различные hook'и на различные action'ы.
Простой пример получения уведомлений по e-mail(можно использовать команду mail, но в условиях задачи ее не было, так же не было sendmail и прочего. Вообщем можно сделать как угодно, но это самый простой вариант, который подходил под условия задачи).
Теперь этот скриптик необходимо поместить в /home/svn/masterpanel/hooks/post-commit
Дать ему права на выполнения для пользователя владельца.
Потребовалось получать уведомления об изменениях в svn.
В svn есть возможность настраивать различные hook'и на различные action'ы.
Простой пример получения уведомлений по e-mail(можно использовать команду mail, но в условиях задачи ее не было, так же не было sendmail и прочего. Вообщем можно сделать как угодно, но это самый простой вариант, который подходил под условия задачи).
#!/usr/bin/perl -w
use Net::SMTP_auth;
my $repos=$ARGV[0];
my $rev=$ARGV[1];
my $change_data=`/usr/local/bin/svnlook diff -r $rev /home/svn/masterpanel/`;
$smtp = Net::SMTP_auth->new('smtp.example.com');
$smtp->auth('CRAM-MD5', 'some_login', 'some_pass');
$smtp->mail('svn@example.ru');
$smtp->to('masters@example.com');
$smtp->data();
$smtp->datasend("Subject: svn.example.com\n");
$smtp->datasend('From: svn@example.com');
$smtp->datasend("\n");
$smtp->datasend("$repos\n");
$smtp->datasend("$rev\n");
$smtp->datasend("$change_data\n");
$smtp->dataend();
$smtp->quit;
Теперь этот скриптик необходимо поместить в /home/svn/masterpanel/hooks/post-commit
Дать ему права на выполнения для пользователя владельца.