Domanda

Ho sempre trovato molto utile il check-in (commit) delle e-mail per tenere traccia del lavoro svolto da altre persone nella codebase/repository.Come posso configurare SVN per inviare tramite e-mail una lista di distribuzione su ciascun commit?

Utilizzo client su Windows e il server Apache Subversion su Linux.Tuttavia, le risposte seguenti per varie piattaforme saranno probabilmente utili ad altre persone.

È stato utile?

Soluzione

Usi il hook post-commit.Ecco un guida.

Ecco un esempio di script Ruby che invia un'e-mail dopo ogni commit: commit-e-mail.rb

Altri suggerimenti

Dai un'occhiata allo standalone Notifica sovversione attrezzo (Solo Windows!)Può inviare e-mail su commit e anche molto altro!

Ti consigliamo di familiarizzare con ganci del repository, in particolare il gancio post-commit.

1) Installa svnnotify su un server svn usando sudo apt-get

2) Utilizza l'hook post-commit del tuo repository (leggi sugli hook post-commit sul sito web svn)

3) Apri il file hook post-commit e incolla il seguente codice per inviare un'e-mail utilizzando il server SMTP.Usare SMTP è semplice poiché non è necessario configurare Sendmail.

4) Assicurati che dopo \ (interruzione di riga) non ci sia uno spazio 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

C'è una domanda correlata Qui sugli hook post-commit.Personalmente, preferisco inviare un messaggio a qualcosa da cui posso ottenere un feed RSS, poiché un'e-mail per impegno sovraccaricherebbe la mia casella di posta abbastanza rapidamente.

Secondo @Matt Miller sui feed RSS.

C'è uno strumento utile chiamato WebSVN che offre feed RSS di ogni repository e singoli rami/tag/cartelle con messaggi di commit completi.È anche un'ottima interfaccia web per esaminare rapidamente la cronologia dei file e i commit/diff senza dover eseguire un aggiornamento e aprire l'editor preferito.

Come ha detto qualcun altro, "quale piattaforma".Su Windows ho usato "blat", che è un mailer SMTP gratuito da riga di comando per fare questo, insieme a un post-commit e un altro file batch.

Il post commit è simile al seguente:(Chiama semplicemente un altro file batch)

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

E mail.bat assomigliava a questo:

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

Il più grande problema nello scrivere hook SVN è che potresti non avere praticamente NESSUNA configurazione dell'ambiente: nessun percorso exe, nessun percorso temporaneo, ecc.Anche se forse è migliorato nelle build SVN più recenti.

Potresti usare buildbot.È uno strumento che può intraprendere azioni arbitrarie ogni volta che si verifica un check-in.È un sistema di integrazione continua completo di tutte le funzionalità, ma se desideri solo e-mail può sicuramente gestirlo.Dispone di plug-in per una varietà di SCM incluso SVN.

Nella directory "hooks" del tuo specifico ramo di subversion ci sono 9 file modello per iniziare.

Punto chiave:subversion non eseguirà nessuno dei file finché non verranno rinominati.Per far sì che post-commit.tmpl venga eseguito sotto UNIX, rinominarlo "post-commit".In Windows, rinominalo in "post-commit.bat" o "post-commit.exe".La sovversione lo farà non eseguire il file se è denominato "post-commit.tmpl" o "post-commit.sh" o simile.

Inoltre, assicurati che il file sia eseguibile dallo stesso utente che esegue subversion.

Utilizzo uno script post-commit simile a questo uno.

Invia una bella email HTML.L'ho aggiornato in cui evidenzia il codice rimosso in rosso ed evidenzia il codice aggiunto in blu.

VisualSVN Server dispone di un utile hook di notifica tramite posta elettronica di commit VisualSVNServerHooks.exe.Supporta differenze colorate e può inviare notifiche di commit solo quando il commit influisce su un determinato percorso del repository.

Vedere "Configurazione delle notifiche e-mail nel server VisualSVN".

L'ho fatto sul server Linux in 3 passaggi:

  1. Creare una mailing list (svn-notify@xy.com) e aggiungi persone all'elenco.

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

    • to_addr = svn-notify@xy.com
    • from_addr = %(autore)s@xy.com
    • commit_subject_prefix =[XY-SVN]
  3. Aggiungi questa riga al tuo /path_to_your_svn/svn/hooks/post-commit file:
    /path_to_your_svn/svn/hooks/svn-notify/mailer.py commit "$REPOS" "$REV" /path_to_your_svn/svn/hooks/svn-notify/mailer.conf

Quale piattaforma?

Su Mac OS X ho installato msmtp e creato uno script post-commit sotto gli hook nel repository.È necessario impostare un file .msmtprc per svn (O www) utente.

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

Fare {root of repository} E {list of recipients} specifico per le tue esigenze.Nota: ho utilizzato UTF-8 perché qui in Svezia abbiamo alcuni caratteri speciali (åäö).

C'è un (grande) esempio scritto in Perl incluso nel sorgente di Subversion (può essere visto qui).

Anche SVNMailer, che funziona su Linux.

Controlla il svn-mod-e-mail pacchetto descritto Qui.IL svn-mod-e-mail è un potente strumento per la gestione delle notifiche e-mail SVN fornito come archivio Debian.È facile da installare, configurare e utilizzare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top