Хвост отправки коммита 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 есть несколько скриптов-хуков, которые отправляют электронную почту. Посмотри в каталогах

инструменты / крюк-скрипты

CONTRIB / крюк-скрипты

Я установил скрипт 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.
 ?>
Другие вопросы по тегам