MegaLab.it
Stampa Articolo
Aperiodico gratuito di informatica
 
20090625115954_737063149_20090625115932_18826826_sl_sync.png

Eseguire automaticamente un "update" ad ogni "commit" con Subversion (SVN)

a cura di Zane
26/10/2011 - articolo
Linux & Open Source - Per scrivere su file system i file aggiornati conservati nel repository non è obbligatorio lanciare manualmente il comando "svn update". Sfruttando l'apposito "gancio", il server può svolgere l'operazione automaticamente ad ogni commit.

Nel corso dell'articolo "Guida: predisporre un server Subversion (SVN) su CentOS" abbiamo visto come installare questa potentissima soluzione per il controllo di versione.

Se avete scelto lo strumento quale base per gestire un progetto software (e, in particolare, lo sviluppo di un sito web), avrete probabilmente già notato che, dopo aver inviato le modifiche al server dalla vostra macchina di lavoro, è necessario lanciare manualmente il comando svn update prima che i file "escano" dal database di SVN e siano concretamente scritti in una cartella sul file system utilizzabile dagli altri programmi.

Ebbene: grazie al meccanismo degli "hook" (letteralmente "gancio"), il server stesso può eseguire automaticamente qualsiasi operazione al verificarsi di determinati eventi quali, appunto, l'"update" dei file contenuti in una cartella di lavoro locale in seguito al "commit" di nuovo materiale.

Preparare lo spazio

Per prima cosa, assicuratevi di aver predisposto una cartella sul server nella quale Subversion passa scrivere, di volta in volta, la copia più aggiornata del vostro lavoro.

Se ancora non l'avete, aprite il terminale (menu Applications -> Accessories -> Terminal) ed impartite mkdir -p /home/sitoweb/htdocs.

Potete, naturalmente, usare un percorso qualsiasi o creare la stessa directory tramite l'interfaccia grafica impiegando Nautilus.

Eseguire il primo "checkout"

Procedete ora con il primissimo "checkout" del materiale nella directory in questione, ovvero (mi concedano la banalizzazione i più esperti), la procedura tramite il quale SVN crea i file in una cartella designata e "lega" le due componenti.

Se avete seguito le indicazioni fornite nella guida all'installazione di Subversion, il vostro repository si trova in /repo ed il progetto di esempio in /repo/mioprogetto1.

Per procedere con il checkout, lanciate svn co file:///repo/mioprogetto1 /home/sitoweb/htdocs avendo cura, chiaramente, di sostituire i due percorsi con quelli che avete effettivamente scelto sulla vostra macchina.

Il terminale dovrebbe ora mostrare la dicitura Checked out revision X, segno che l'operazione è stata completata.

Automatizzare l'update

Per ottenere l'automazione ricercata, dovete creare un script di nome post-commit (senza estensione!) all'interno della sottocartella hooks del vostro progetto.

Lanciate quindi gedit /repo/mioprogetto1/hooks/post-commit da linea di comando per creare un nuovo file nella posizione appropriata ed incollatevi queste due righe:

Salvate il documento, chiudete gedit, ritornate al terminale e assicuratevi che lo script sia dotato dei permessi appropriati per l'esecuzione lanciando chmod ugo+x /repo/mioprogetto1/hooks/post-commit

MLIShot_20110626173101.jpg

Non sono sicuro che sia indispensabile, ma vi raccomando di riavviare infine il servizio con service svnserve restart.

Provare il tutto

A questo punto, dovrebbe essere tutto pronto. Provate a creare un nuovo file (oppure a modificarne uno esistente) sul client e procedete con il "commit": le stesse variazioni dovrebbero riflettersi immediatamente anche sulla copia presente sul file system del server.

Andare oltre

Nulla vi vieta di eseguire anche altre operazioni all'interno del file post-commit! Non dovete fare altro che elencare i comandi, uno sotto l'altro, nelle righe successive dello script: se avete installato il pacchetto di invio della posta, ad esempio, potete aggiungere qualcosa di simile per spedirvi una e-mail ad ogni nuova revisione:

mail -s "Nuovo commit" "vostroindirizzo@gmail.com" "Il progetto $1 è stato appena portato alla revisione $2"

MegaLab.it rispetta la tua privacy. Per esercitare i tuoi diritti scrivi a: privacy@megalab.it .

Copyright 2008 MegaLab.it - Tutti i diritti sono riservati