Subversion: уведомления о коммитах в определённую ветку
Date June 2nd, 2011 Author Vitaly Agapov
— Да.
— Вы не хотите прочитать его? Там может быть что-то важное.
— Да, последние два тоже были важными. Первое было от моей жены, она сообщала, что уходит от меня. Второе было от моего адвоката, он сказал, что уходит от меня… с моей женой.
— Эхехе, не повезло! Но как считал дедушка, за дождливым днём придёт ясный. Это добрая весть. А да, спорим на ужин.
— Ладно.
— Вы уволены?!! Вот жалость…
Для реализации сабжа нам понадобится скрипт mailer.py, который можно раздобыть либо из репозиториев вместе с пакетом subversion-tools, либо скачать с офсайта:
http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/mailer/mailer.py
http://svn.apache.org/repos/asf/subversion/trunk/tools/hook-scripts/mailer/mailer.conf.example
Само собой, понадобится и интерпретатор Python.
Здесь рассмотрю только конкретную задачу. Полная документация по svnmailer есть здесь.
В целом, шаги будут выглядеть следующим образом:
- Скачиваем себе скрипт и файл настроек или просто ищем, куда их положил менеджер пакетов при установке.
- Самому скрипту делаем chmod a+x, а файл настроек переименовываем из mailer.conf.example в mailer.conf.
- Правим mailer.conf и делаем из него что-то такое:
[general] # здесь нужен правильный путь к команде для отправки почты mail_command = /usr/sbin/sendmail smtp_hostname = <адрес нашего почтового сервера> [defaults] [some_group] # если нужен определённые репозиторий, то его можно здесь задать регулярным выражением for_repos = .* # здесь путь к нужно ветке, о коммитах в которую будут высылаться нотификации for_paths = .*/some/path/.* diff = /usr/bin/diff -u -L %(label_from)s -L %(label_to)s %(from)s %(to)s commit_subject_prefix = propchange_subject_prefix = lock_subject_prefix = unlock_subject_prefix = # что использовать в качестве адреса отправителя from_addr = svn # список получателей через пробел to_addr = first@example.com second@example.com reply_to = generate_diffs = add copy modify show_nonmatching_paths = yes [maps]
- Внутри директории проекта есть директория hooks, где лежат скрипты, выполняемые Subversion при определённых событиях в системе. В нашем случае нужен скрипт post-commit (придется переименовать post-commit.tmpl в post-commit). Внутри должны быть такие строки:
REPOS="$1" REV="$2" /path/to/our/mailer.py commit "$REPOS" "$REV"
- Файлу post-commit надо сделать chmod a+x.
- Проверяем, что всё ок.
Tags: Linux, SVN
Category:
Linux |
1 Comment »
22 December 2011 - 10:36
Спасибо за пример. Все получилось.