In questa terza puntata vedremo come utilizzare Redmine nella pratica quotidiana per gestire efficacemente i progetti software, soprattutto in uno scenario di lavoro in team.
Configurazione iniziale
Per provare gli esempi di oggi sarà necessario avere installato e configurato correttamente Subversion; come abbiamo già visto nelle scorse puntate, un modo molto semplice di avere tutto lo stack ovvero server, applicazione e configurazione di base è utilizzare la distribuzione BitNami. La configurazione manuale è possibile (e consigliata per un ambiente di produzione), ma per fare delle prove sarà sufficiente questo pacchetto.
Altre configurazioni:
- Administration / Settings / Repositories
- Referencing keywords: inserire il carattere asterisco “*” (senza apici) al posto dei valori già presenti;
- Fixing keywords: selezionare Resolved per la tendina applied status;
- utenti di esempio, appartenenti al team di sviluppo, che nei nostri esempi saranno Utente 1 e Utente 2;
- un progetto su cui lavorare, che chiameremo Progetto di Test, con attivati questi moduli: Issue tracking, Wiki, Repository;
- aggiungere Utente 1 e Utente 2 al progetto, assegnandogli il ruolo di developer o manager.
Per creare questi dati è sufficiente accedere come Administrator e utilizzare le funzionalità disponibili in Administration come visto nella parte 1) e 2) di questa serie.
Integrazione con Subversion
Prima di integrare Subversion nella configurazione del nostro progetto dobbiamo prima creare un repository SVN. Seguiamo quindi le indicazioni della guida ufficiale, che ci consigliano di utilizzare la BitNami Console; quest’ultima non è altro che uno script che mette a disposizione della riga di comando gli eseguibili dello stack.
Questo è il comando per creare un repository SVN:
svnadmin create [PATH ASSOLUTO]
Al posto di [PATH ASSOLUTO] dovete mettere il percorso dove sarà memorizzato il repository, ad esempio
svnadmin create "C:\svn\test_project"
(compresi i doppi apici) su Windows, oppure
svnadmin create /home/user/svn/test_project
su linux.
Dopo aver fatto ciò, dobbiamo importare i sorgenti del progetto nel repository:
- sempre rimanendo nella Bitnami Console, spostatevi nella directory dove risiedono i sorgenti:
cd /path/to/project/
(sostituite /path/to/project/ con il path vero)
- se non avete ancora inserito alcun file, createne uno d’esempio e chiamatelo sorgente1.txt;
- eseguite il comando svn import:
svn import /path/to/project/ file:///path/to/repository/ -m "import iniziale"
/path/to/repository/ corrisponde al valore utilizzato sopra per [PATH ASSOLUTO], però su Windows i backslash “\” vanno tradotti in forward slash “/”. Ad esempio, se il progetto è in “C:\path\to\project\” e il repository è in “C:\svn\test_project”, allora il comando sarà:
svn import C:\path\to\project\ file:///C:/svn/test_project/ -m "import iniziale"
A questo punto siete pronti per eseguire il checkout; questo comando non si limita a scaricare i sorgenti aggiornati dal repository, ma crea delle directory .svn contenenti meta-informazioni sullo stato del file e delle directory, permettendoci di sincronizzare facilmente i file con il repository centrale. Spostiamoci ora in una directory differente e digitiamo questo comando:
svn checkout file:///path/to/repository/
Nella directory corrente ne verrà quindi creata un’altra, test_project; è molto importante utilizzare quest’ultima per lo sviluppo e non quella iniziale da dove abbiamo eseguito l’import!
Finalmente possiamo aggiungere alla configurazione del progetto anche il repository dei sorgenti:
- collegarsi come Administrator e andare nelle impostazioni del progetto;
- cliccare sul tab repository;
- selezionare Subversion;
- nel campo URL utilizzare file:///path/to/repository/ (con le dovute modifiche);
- poiché stiamo accedendo tramite filesystem locale (prefisso della URL che comnicia con “file:”) possiamo lasciare vuoti i campi Login e Password;
- cliccare su Save.
Se ora clicchiamo sul tab Repository arriviamo su una pagina che ci riassume la situazione dei sorgenti.
Redmine in azione
Vediamo ora alcune delle funzionalità più utili che Redmine mette a disposizione.
La prima e più importante è sicuramente la gestione delle segnalazioni (o issue); abbiamo visto negli articoli scorsi come inserire e modificare gli issue, ma abbiamo affrontato l’argomento in maniera molto semplificata. Con l’integrazione dei sorgenti, la situazione diventa molto più interessante!
Facciamo una prova:
- eseguire il login come User 1;
- inserire un issue e annotarsi l’issueID che gli è stato assegnato. L’issueID è visibile dopo aver salvato ed è un segno di cancelletto seguito da un numero: #1, #2, eccetera. È visibile anche nella pagina riepilogativa, sotto la colonna “#”;
- modificare un sorgente;
- eseguire il commit del sorgente, inserendo nel commento l’issueID. Dalla directory del progetto:
svn commit -m "fixes #1"
N.B. al posto di #1 metteteci l’issueID che avete annotato sopra!
Se torniamo sulla pagina degli issue nulla sembra cambiato: l’issue di prova è ancora in stato New. Se però clicchiamo sul tab Repository, succederà la magia: Redmine si accorgerà del commit, vedrà il messaggio “fixes #1” e provvederà automaticamente a mettere in status Resolved l’issue con ID #1. Non è finita qui, Redmine infatti ci mette a disposizione molte informazioni per risalire ai dettagli di lavorazione dell’issue: cliccando sul dettaglio dell’issue infatti possiamo vedere esattamente in quale revisione (changeset) è stato risolto l’issue!. Se poi torniamo sul tab Repository, oltre a poter eseguire dei diff fra diverse versioni del file, possiamo vedere tutti i messaggi di commit, e vedremo che tutti i riferimenti agli issue, ovvero #1, #2 ecc. vengono trasformati in link alla pagina di dettaglio. Questo meccanismo è applicato a tutti gli elementi di testo (messagi, note, ecc.) presenti in Redmine, quindi possiamo riferirci ad un issue particolare anche dalle pagine del Wiki, o da commenti nel forum, o ancora nei messaggi di commit. In ogni caso se non utilizziamo la parola-chiave “fixes”, il bug rimarrà nello stato attuale.
Conclusioni
In questi articoli abbiamo visto come Redmine sia uno strumento potente ma facile da utilizzare (oltre che gratuito!) e come ci possa aiutare a gestire i progetti in azienda. La sua filosofia molto pragmatica e modulare permette di “digerirlo” un po’ alla volta, senza dover per forza studiare ore e ore di manuali, rendendoci più produttivi da subito. Davvero un progetto ben fatto!
Links
- Redmine – sito ufficiale.
- Distribuzione BitNami di Redmine;
- Subversion.