Хвост пост-фиксации SVN для отправки пользователю электронной почты при изменении определенного файла - PullRequest
5 голосов
/ 19 сентября 2011

Я хотел бы добавить ловушку пост-фиксации, чтобы, если пользователь фиксирует изменения в определенном файле, я получал уведомление по электронной почте.

Кто-нибудь видел пример этого или это возможно?

Я уже настроил хук предварительного коммита, но это предел моих знаний.

Ответы [ 3 ]

6 голосов
/ 19 сентября 2011

У меня есть ловушка для пост-фиксации на github , которая делает именно это, и позволяет пользователям (вместо администратора сообщать, какие файлы они просматривают для изменений, и какой адрес электронной почты адресует эти изменения).следует отправить на.

Вы можете объединить это с моим крючком pre-commit-kitchen-sink , чтобы пользователи могли редактировать только свои собственные файлы наблюдения. Сценарии ловушек используют Perl,но им не требуются нестандартные модули, поэтому они довольно просты в использовании.

Каждый пользователь получает свой собственный файл наблюдения, синтаксис довольно прост:

mail = david@gmail.com
file =**/build.xml
match = [Mm]akefile

В строке mail я хочу отправить уведомление по электронной почте. У меня их может быть несколько. file - это глобальное выражение (закрепленное в передней и задней части выражения) того, какие файлы я просматриваю. match строка похожа и использует регулярное выражение Perl, которое не занято.

Файлы наблюдения хранятся в хранилище Subversion в указанном вами каталоге. Это означает, что пользователи могут устанавливать свои собственные watчес.Вы можете использовать мой хук 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 привязан к корню хранилища (используя / в качестве корня), поэтому вам нужно указать полный путь или использовать **/ указать любой путь к этому файлу.

1 голос
/ 19 сентября 2011

В дистрибутиве Subversion есть несколько скриптов хуков, которые отправляют электронную почту.Посмотрите в каталогах

tools / hook-scripts

contrib / hook-scripts

0 голосов
/ 13 апреля 2012

Я настроил скрипт PHP для выполнения с пост-фиксацией.Вы можете отредактировать скрипт PHP, чтобы он был достаточно умным, и в зависимости от того, какие файлы были обновлены, выполните определенные действия.

/ subversion / hooks / post-commit:

 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.
 ?>
...