Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Gli script "hook"

Script per controllare e automatizzare operazioni sul repository
Script per controllare e automatizzare operazioni sul repository
Link copiato negli appunti

Per semplificare la gestione del repository e automatizzare alcune procedure, Subversion ci consente di creare degli script che vengano automaticamente invocati in corrispondenza di determinati eventi. In altre parole, ogni volta che viene effettuata una certa operazione sul repository, Subversion controlla se nella cartella hooks del repository sia presente un file eseguibile con un certo nome, e lo esegue.

Tipicamente uno script esegue operazioni di validazione o notifica. Quindi si può fare in modo, ad esempio, che ogni commit sia segnalato via e-mail a un indirizzo specifico; oppure fare in modo che una modifica venga esaminata prima del caricamento, e rifiutata se non soddisfa certi criteri. Un altro esempio è quello di bloccare i commit sulle revisioni tag.

I nomi degli script che vengono cercati corrispondono abbastanza chiaramente agli eventi a cui sono associati.

Elenco degli eventi

pre-commit
pre-lock
pre-revprop-change
pre-unlock
post-commit
post-lock
post-unlock
post-revprop-change
start-commit

Una rapida spiegazione degli eventi elencati. Conosciamo già il commit; lock e unlock si riferiscono all'applicazione e rimozione di un lock su un file, che è possibile tramite l'omonimo comando; revprop-change si riferisce alla richiesta di modifica di una proprietà del repository.

Per tutte le operazioni, esiste lo script "pre-", che viene eseguito prima e può interrompere l'esecuzione se ritorna un codice diverso da zero, e lo script "post-" che viene eseguito dopo e ovviamente non può interrompere niente, visto che l'operazione è già stata eseguita

Unica eccezione è lo start-commit, che viene eseguito nel momento in cui il client rivolge al server la richiesta di creazione di una transazione, quindi prima ancora che tale transazione sia pronta per essere applicata al repository - e quindi prima ancora del pre-commit.

Nella cartella hooks di qualunque repository appena installato sono presenti degli script shell di esempio nominati come sopra, ma con estensione .tmpl. Questi script di esempio contengono – in forma di commento – le spiegazioni necessarie per l'utilizzo e i parametri che gli vengono passati, nonchè esempi delle operazioni più frequenti. È chiaro quindi che il modo più immediato per cominciare a usare gli hook è quello di modificare uno di questi script e rinominarlo rimuovendo l'estensione .tmpl.

Tali script non devono essere scritti in un particolare linguaggio. Possono essere script di shell, Perl, o altri linguaggi di scripting; possono anche essere eseguibili compilati. L'unico requisito è che devono chiamarsi esattamente come indicato (e avere i permessi di esecuzione) perchè vengano avviati.

Nota: su Windows, gli script devono chiamarsi come indicato e allo stesso tempo devono avere un'estensione associata a un file eseguibile, ad esempio .bat o .exe.

Nota: per garantire una maggior sicurezza, in fase di esecuzione gli script non ricevono le variabili di ambiente del sistema operativo. Se utilizziamo le variabili di ambiente nello script, potremmo verificare che funziona tutto perfettamente se lanciati a mano, ma non quando eseguito da Subversion. È bene tener presente questa particolarità per non perdere ore a capire cosa abbiamo sbagliato nel nostro script.


Ti consigliamo anche