Хвост отправки коммита SVN пользователю электронной почты при изменении определенного файла
Я хотел бы добавить хук пост-фиксации, чтобы, если пользователь фиксирует изменения в определенном файле, я получал уведомление по электронной почте.
Кто-нибудь видел пример этого или это возможно?
Я настроил хук предварительной фиксации раньше, но это предел моих знаний.
3 ответа
У меня есть ловушка post-commit для github, которая делает именно это, и позволяет пользователям (вместо администратора сообщать, какие файлы они просматривают для изменений, и на какие адреса электронной почты следует отправлять эти изменения).
Вы можете объединить это с моим хуком pre-commit-kitchen-sink, чтобы пользователи могли редактировать только свои собственные файлы часов. Сценарии ловушек используют Perl, но они не требуют каких-либо нестандартных модулей, поэтому они довольно просты в использовании.
Каждый пользователь получает свой собственный файл наблюдения, синтаксис которого довольно прост:
mail = david@gmail.com
file =**/build.xml
match = [Mm]akefile
mail
линия, где я хочу отправить уведомление по электронной почте. Я могу иметь несколько. file
является глобальным выражением (закрепленным в передней и задней части выражения) того, какие файлы я просматриваю. match
строка аналогична и использует регулярное выражение Perl, которое не занято.
Файлы наблюдения хранятся в хранилище Subversion в указанном вами каталоге. Это означает, что пользователи могут устанавливать свои собственные часы. Вы можете использовать мой хук pre-commit-kitchen-sink, чтобы пользователи не могли изменять файлы наблюдения других пользователей:
[file You are only allowed to change their own watch files]
file =/watchfiles/**
permission = read-only
users = @ALL
[file You are only allowed to change their own watch files]
file = /watchfiles/<USER>.cfg
permission = read-write
users = @ALL
<USER>
Строка интерпретируется как идентификатор пользователя.
пример
Если я хочу установить хэнд пост-фиксации для нескольких файлов, могу ли я установить? например, file = ab / build.xml, bb / cs.txt, cc /. и т.д. Я хочу получать уведомления по электронной почте только об этих файлах
Вы можете вставить строку для каждого шаблона:
email = my@email.com
file = **/ab/build.xml
file = **/bb/cs.txt
file = **/cc/*.*
Помни что file
шаблон glob привязывается к корню хранилища (используя /
в качестве корня), поэтому вам нужно указать полный путь или использовать **/
указать любой путь к этому файлу.
В дистрибутиве Subversion есть несколько скриптов-хуков, которые отправляют электронную почту. Посмотри в каталогах
Я установил скрипт PHP для выполнения с пост-фиксацией. Вы можете отредактировать скрипт PHP, чтобы он был довольно умным, и в зависимости от того, какие файлы были обновлены, выполняйте определенные действия.
/ Диверсии / Крючки / после совершения:
REPOS="$1"
REV="$2"
MESSAGE=$(svnlook propget --revprop -r $REV $REPOS svn:log)
CHANGES=$(svnlook changed -r $REV $REPOS)
php /usr/share/subversion/hook-scripts/commit-email.php "$REPOS" "$REV" "$MESSAGE" "$CHANGES"
/usr/share/subversion/hook-scripts/commit-email.php:
<?php
//files updated will be in $_SERVER['argv'][4], you could expand it in to an a
//array and search for what you need, and depending on what's found, send emails accordingly.
?>