У кого-нибудь есть скрипт хука уведомлений о коммите, который будет отправлять письмо при коммите кодов? - PullRequest
2 голосов
/ 29 сентября 2008

Может поделитесь со мной любым из этих скриптов?

Ответы [ 5 ]

2 голосов
/ 29 сентября 2008

По какой-то причине скрипт ruby ​​и скрипт ловушек по умолчанию у меня не работают. Это может быть связано с некоторыми странностями с нашим почтовым сервером, но я все равно включу здесь важную часть:

#!/bin/sh

REPOS="$1"
REV="$2"

svnnotify --repos-path "$REPOS" --revision "$REV" --with-diff --to mailinglist@server.domain --smtp mailserver.domain --from svn@server.domain -VVVVVVVVV -P "[repository_name]"

Часть -VVVVVVV отображает очень подробные сообщения, если вы хотите проверить команду вне сценария. Он должен быть удален в самом скрипте.

Конечно, чтобы это работало, вам нужно установить svnnotify. Вы можете установить это, сначала установив cpan, который должен поставляться с perl. Затем вам нужно запустить cpan и установить библиотеку SVN :: Notify.

$ cpan
cpan> install SVN::Notify

Обратите внимание, что части '$' и 'cpan>' являются просто подсказками, их вводить не нужно.

Это решение было гораздо более привлекательным для меня, потому что оно давало подробное сообщение об ошибке, которое помогло разобраться с теми проблемами с почтовым сервером, о котором я говорил. У нас также есть несколько репозиториев, поэтому копирование всей программы / скрипта в каждый каталог было бы излишним. Ваш пробег может отличаться.

Текст в блоке кода вверху должен быть помещен в текстовый файл с именем «post-commit». Этот файл должен быть расположен в / path / to / svn / repos / repository_name / hooks и помечен как исполняемый.

2 голосов
/ 29 сентября 2008

По умолчанию он называется commit-email.pl и включается при установке Subversion. Но здесь один в рубине:

<code>#!/usr/bin/ruby -w

# A Subversion post-commit hook. Edit the configurable stuff below, and
# copy into your repository's hooks/ directory as "post-commit". Don't
# forget to "chmod a+x post-commit".

# ------------------------------------------------------------------------

# You *will* need to change these.

address="FOO@SOME_DOMAIN.com"
sendmail="/usr/sbin/sendmail"
svnlook="/usr/bin/svnlook"

# ------------------------------------------------------------------------

require 'cgi'

# Subversion's commit-email.pl suggests that svnlook might create files.
Dir.chdir("/tmp")

# What revision in what repository?
repo = ARGV.shift()
rev = ARGV.shift()

# Get the overview information.
info=`#{svnlook} info #{repo} -r #{rev}`
info_lines=info.split("\n")
author=info_lines.shift
date=info_lines.shift
info_lines.shift
comment=info_lines

# Output the overview.
body = "<p><b>#{author}</b> #{date}</p>"
body << "<p>"
comment.each { |line|  body << "#{CGI.escapeHTML(line)}<br/>\n" }
body << "</p>"
body << "<hr noshade>"

# Get and output the patch.
changes=`#{svnlook} diff #{repo} -r #{rev}`
body << "<pre>"
changes.each do |top_line|
  top_line.split("\n").each do |line|
    color = case
      when line =~ /^Modified: / || line =~ /^=+$/ || line =~ /^@@ /: "gray"
      when line =~ /^-/: "red"
      when line =~ /^\+/: "blue"
      else "black"
    end
    body << %Q{<font style="color:#{color}">#{CGI.escapeHTML(line)}</font><br/>\n}
 end
end
body << "
» # Напишите заголовок. header = "" заголовок
1 голос
/ 10 марта 2011
#!/bin/ksh
#
# This is a custom post-commit for sending email
# when an svn repo is changed.
#

rcpts="foo@bar.edu, baz@bar.edu"

repodir=$1
revision=$2

author=`/usr/bin/svnlook author  -r $revision $repodir`
date=`/usr/bin/svnlook   date    -r $revision $repodir`
log=`/usr/bin/svnlook    log     -r $revision $repodir`
info=`/usr/bin/svnlook   changed -r $revision $repodir`

repo=${repodir##*/}

subject="$repo svn updated by $author"

url="https://myserver.bar.edu/svn/$repo"

/usr/bin/mail -s "$subject" "$rcpts"<<EOM
repository: $url
date:       $date
username:   $author
revision:   $revision
comment:    $log

$info
EOM
1 голос
/ 29 сентября 2008

В каталоге hooks в вашем хранилище svn вы найдете скрипт post-commit.tmpl. Скопируйте его с именем post-commit и отредактируйте по своему усмотрению. Обычно он запускает скрипт commit-email.pl, который поставляется с subversion; это также потребует редактирования, чтобы установить вещи, как вы хотите.

0 голосов
/ 18 апреля 2015

Попробуйте это

/usr/bin/svnnotify --revision "$REV" --repos-path "$REPOS" \ --subject-cx --subject-prefix "[Project:commit] " --max-sub-length 128 \ --with-diff --handler Alternative --alt HTML::ColorDiff \ --to 'abc@xyz.com' --from 'svn@xyz.com' --set-sender

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...