SVNNotify: не отправлять уведомление по электронной почте, если в сообщении журнала svn присутствует специальное ключевое слово

#java #perl #svn #hook

#java #perl #svn #перехват

Вопрос:

Я использую SVNNotify для отправки сообщений с уведомлением после фиксации. Иногда я делаю опечатку и хочу снова зафиксировать, но я НЕ хочу бомбардировать своих пользователей еще одним неважным сообщением электронной почты. Поэтому было бы неплохо иметь специальную директиву, чтобы сообщить SVNNotify, что на этот раз ему НЕ нужно отправлять какое-либо электронное письмо. Что-то отправлено через сообщение журнала svn:

svn commit -m ‘Опечатка (_no_email_)’

Таким образом, SVNNotify проанализирует _no_email_ и поймет, что на этот раз ему НЕ нужно уведомлять.

Кто-нибудь знает PERL и / или SVNNotify для выполнения такого взлома Notify.pm ?

Спасибо!!!

Ответ №1:

Вы можете просто добавить следующую строку в /usr/local/share/perl/5.10.1/SVN/Nofity.pm:

 # Abort if log message ends with _
exit if ($self->{message}[0] =~ /_s*$/);
  

В строке 1299 внутри этого цикла:

 # Add the first sentence/line from the log message.
unless ($self->{no_first_line}) {

    # Abort if log message ends with _
    exit if ($self->{message}[0] =~ /_s*$/);

    # Truncate to first period after a minimum of 10 characters.
    my $i = index substr($self->{message}[0], 10), '. ';
    $self->{subject} .= $i > 0
        ? substr($self->{message}[0], 0, $i   11)
        : $self->{message}[0];
}
  

Ответ №2:

В SVN::Notify есть способ создания пользовательских фильтров. Взгляните на документацию для SVN::Notify::Filter . Это выглядит довольно просто, и есть много примеров.

 perldoc SVN::Notify::Filter