Pergunta

Sempre achei os e-mails de checkin (commit) muito úteis para acompanhar o trabalho que outras pessoas estão fazendo na base de código/repositório.Como configuro o SVN para enviar por e-mail uma lista de distribuição em cada commit?

Estou executando clientes no Windows e o servidor Apache Subversion no Linux.As respostas abaixo para várias plataformas provavelmente serão úteis para outras pessoas.

Foi útil?

Solução

Você usa o ganchos pós-commit.Aqui está um guia.

Aqui está um exemplo de script Ruby que envia um email após cada commit: commit-email.rb

Outras dicas

Dê uma olhada no autônomo Notificação do Subversion ferramenta (Somente Windows!)Ele pode enviar e-mails no commit e muito mais!

Você vai querer se familiarizar com ganchos de repositório, particularmente o gancho pós-commit.

1) Instale o svnnotify em um servidor svn usando sudo apt-get

2) Use o gancho pós-commit do seu repositório (leia sobre os ganchos pós-commit no site svn)

3) Abra o arquivo de gancho pós-commit e cole o código a seguir para enviar um e-mail usando o servidor smtp.Usar o smtp é simples, pois você não precisa configurar o sendmail.

4) Certifique-se de que após \ (quebra de linha) você não tenha espaço extra.

#!/bin/sh

REPOS="$1"
REV="$2"
TO="xyz@yah.com" # who will receive the notifications
FROM="hello@goog.com" # what will be in "FROM" fields


 /usr/bin/svnnotify \

--repos-path "$REPOS" \
--revision "$REV" \
--to $TO \
--from $FROM \
--reply-to $FROM \
--smtp "YOUR.SMTP.MAIL.COM" \
--subject-prefix "[svn commit]" \
--attach-diff -a \
--header 'Message generated on Subversion Check-in.' \
--footer 'OpenSource Team. ' \
--svnlook "/usr/local/bin/svnlook" \
--handler HTML::ColorDiff # make diff pretty

Há uma pergunta relacionada aqui em ganchos pós-commit.Pessoalmente, prefiro enviar uma mensagem para algo de onde possa obter um feed RSS, pois um e-mail por commit sobrecarregaria minha caixa de entrada muito rapidamente.

Destacamento @Matt Miller em feeds RSS.

Existe uma ferramenta útil chamada WebSVN que oferece feeds RSS de cada repositório e ramificações/tags/pastas individuais com mensagens de commit completas.É também uma ótima interface web para visualizar rapidamente históricos de arquivos e commits/diffs sem ter que executar uma atualização e abrir o editor de sua preferência.

Como alguém disse, ‘qual plataforma’.No Windows, usei 'blat', que é um mailer SMTP de linha de comando gratuito para fazer isso, junto com um pós-commit e outro arquivo em lote.

O post commit fica assim:(Apenas chama outro arquivo em lote)

 call d:\subversion\repos\rts\hooks\mail %1 %2

E mail.bat ficou assim:

copy d:\subversion\repos\RTS\hooks\Commitmsg.txt %temp%\commit.txt
copy d:\subversion\repos\RTS\hooks\subjbase.txt %temp%\subject.txt
svnlook info -r %2 %1 >> %temp%\commit.txt
echo Revision %2 >> %temp%\commit.txt
svnlook changed -r %2 %1 >> %temp%\commit.txt
svnlook author -r %2 %1 >> %temp%\subject.txt
c:\utils\blat %temp%\commit.txt -t <me@my.email.com> -sf %temp%\subject.txt -server ServerName -f "SVN Admin <svn@my.email.com>" -noh2

O maior problema ao escrever ganchos SVN é que você pode basicamente NÃO ter configuração de ambiente - nenhum caminho exe, nenhum caminho temporário, etc.Embora talvez isso tenha melhorado nas compilações mais recentes do SVN.

Você poderia usar robô de construção.É uma ferramenta que pode realizar ações arbitrárias sempre que ocorre um check-in.É um sistema de integração contínua completo, mas se você quiser apenas e-mails, ele certamente pode lidar com isso.Possui plug-ins para uma variedade de SCMs, incluindo SVN.

No diretório "hooks" do seu ramo específico do Subversion, existem 9 arquivos de modelo para você começar.

Ponto chave:o subversion não executará nenhum dos arquivos até que eles sejam renomeados.Para que o post-commit.tmpl seja executado no Unix, renomeie-o como "post-commit".No Windows, renomeie-o para “post-commit.bat” ou “post-commit.exe”.O Subversion irá não execute o arquivo se ele tiver o nome "post-commit.tmpl" ou "post-commit.sh" ou algo semelhante.

Além disso, certifique-se de que o arquivo seja executável pelo mesmo usuário que executa o Subversion.

Eu uso um script pós-commit semelhante a este um.

Ele envia um belo e-mail em HTML.Eu atualizei alguns onde ele destaca o código que foi removido em vermelho e destaca o código que foi adicionado em azul.

O VisualSVN Server possui um gancho útil de notificação por e-mail de commit VisualSVNServerHooks.exe.Ele suporta diferenças coloridas e pode enviar notificações de commit somente quando o commit afeta determinado caminho do repositório.

Ver "Configurando notificações por e-mail no servidor VisualSVN".

Fiz isso no servidor Linux em 3 etapas:

  1. Crie uma lista de discussão (svn-notify@xy.com) e adicione pessoas à lista.

  2. Editar /path_to_your_svn/svn/hooks/svn-notify/mailer.conf

    • to_addr=svn-notify@xy.com
    • from_addr = %(autor)s@xy.com
    • commit_subject_prefix =[XY-SVN]
  3. Adicione esta linha ao seu /path_to_your_svn/svn/hooks/post-commit arquivo:
    /path_to_your_svn/svn/hooks/svn-notify/mailer.py commit "$REPOS" "$REV" /path_to_your_svn/svn/hooks/svn-notify/mailer.conf

Qual plataforma?

No Mac OS X eu instalei msmtp e criei um script pós-commit sob ganchos no repositório.Um arquivo .msmtprc precisa ser configurado para o svn (ou www) do utilizador.

REPOS="`echo $1 | sed 's/\/{root of repository}//g'` "
REV="$2"
MSG=`/usr/local/bin/svn log -v -r HEAD https://localhost$REPOS`

/usr/local/bin/msmtp {list of recipients} <<EOF
Subject: SVN-Commit $REPOS#$REV
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8Bit

$MSG
EOF

Fazer {root of repository} e {list of recipients} específico para suas necessidades.Observe que usei UTF-8 porque temos alguns caracteres especiais aqui na Suécia (åäö).

Há um exemplo (grande) escrito em Perl incluído no código-fonte do Subversion (pode ser visto aqui).

Também SVN Mailer, que funciona no Linux.

Verifica a svn-mod-e-mail pacote descrito aqui.O svn-mod-e-mail é uma ferramenta poderosa para gerenciamento de notificações por e-mail SVN que é entregue como um arquivo Debian.É fácil de instalar, configurar e usar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top