forked from AkshayAgarwal007/Jekyll-Mono
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path2008-02-20-svn-notifica-via-e-mail-dei-commit.html
20 lines (15 loc) · 3.24 KB
/
2008-02-20-svn-notifica-via-e-mail-dei-commit.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
---
layout: post
title: 'SVN: notifica via e-mail dei commit'
date: '2008-02-20T18:09:00.000+01:00'
author: Luca Ferrari
tags:
- linux
- svn
modified_time: '2008-02-20T18:22:08.067+01:00'
blogger_id: tag:blogger.com,1999:blog-1836481905487384887.post-839564068568582778
blogger_orig_url: http://fluca1978.blogspot.com/2008/02/svn-notifica-via-e-mail-dei-commit.html
permalink: /:year/:month/:day/:title.html
---
<h1>~</h1>
Come già anticipato in un <a href="http://fluca1978.blogspot.com/2008/02/svn-impedire-commit-senza-commento.html">precedente articolo</a> SVN consente di personalizzare le fasi pre e post commit mediante opportuni <span style="font-style: italic;">hooks</span>. E' quindi possibile creare uno script che, nella fase successiva al commit (post-commit) effettui l'invio per e-mail delle informazioni di commit stesse.<br /><br />Esistono diversi modi (e utility) per inviare per e-mail informazioni su un commit, ma uno semplice ed efficace è <span style="font-style: italic;">svnnotify</span> (pacchetto ubuntu libsvn-notify-perl), uno script perl che consulta il repository SVN per reperire le informazioni da mandare via e-mail.<br /><br />E' sufficiente creare uno script denominato <span style="font-style: italic;">post-commit</span> nella directory <span style="font-style: italic;">hooks</span> del repository SVN contenente i seguenti comandi:<br /><br /><pre>EPOS="$1"<br />REV="$2"<br /><br /># commands<br />SVNLOOK=`which svnlook`<br />SVNNOTIFY=`which svnnotify`<br />GREP=`which grep`<br /><br /># from and to e-mail address, substitue with something appropriate<br />MAIL_TO="[email protected]" <br />MAIL_FROM=$MAIL_TO<br /><br /># check projects to send e-mail from<br />MYREPO=javaRepo # the name of the repo, substitute with something appropriate<br />$SVNLOOK dirs-changed "$REPOS" | $GREP $MYREPO > /dev/null<br /><br /># is this a project I'd like to send an-email for?<br />if [ $? -eq 0 ]<br />then<br /> $SVNNOTIFY --repos-path "$REPOS" --revision "$REV" --svnlook "$SVNLOOK" --to "$MAIL_TO" --from "$MAIL_FROM" --attach-diff --subject-cx -i 50 -P "[commit]"<br />fi<br /></pre><br />Si noti che viene definito l'indirizzo di posta elettronica al quale inviare il resoconto, questo potrebbe essere una mailing list (tipicamente -commit) o un alias di posta per gli sviluppatori. Si noti inoltre che viene fatta una selezione sul repository per il quale inviare delle e-mail, tale controllo può essere omesso se si vuole ricevere notifica per ogni repository, o può essere esteso per includere altri repository.<br /><br />Il comando svnnotify viene utilizzato cone le informazioni precedentemente definite, ed in particolare:<br /><ul><li><span style="font-style: italic;">attach-diff</span> che manda per allegato il diff relativo al nuovo commit;</li><li><span style="font-style: italic;">subject-cx</span> imposta il subject dell'e-mail in base al contesto (ad esempio viene visualizzato il percorso dei file modificati). Si noti l'utilizzo del flag -i per limitare la lunghezza della linea di soggetto;</li><li><span style="font-style: italic;">-P</span> per impostare un prefisso della linea di soggetto, così da facilitare il riconoscimento a colpo d'occhio (e mediante filtri automatici) del contenuto dell'e-mail stessa.<br /></li></ul>