I sistemi di controllo delle versioni, anche detti Version Control System, sono applicativi fondamentali nel ciclo di sviluppo di un software: tengono traccia di tutte le modifiche applicate al codice sorgente permettendo di confrontarle con la propria copia locale o con versioni precedenti, permettono di recuperare modifiche precedenti ed infine, tenendo traccia anche dei file e delle directory, permettono di recuperare, per intero, dati non più presenti nelle ultime revisioni.
Il più noto, oltre che il più usato, è sicuramente il CVS (Concurrent Versions System), anche se l'effettivo padre di questa categoria di applicativi è RCS, Revision Control System, il primo sistema di controllo delle versioni che, però, permetteva di gestire il singolo file e non interi progetti, rendendo complicato l'utilizzo e la gestione degli archivi del codice sorgente.
Esistono svariati software, oltre al CVS e a RCS, che si occupano di questa tipologia di operazioni:
- SVN, chiamato anche Subversion;
- Monotone;
- Git;
- SCCS;
- CSSC;
- DCVS;
- BitKeeper;
- Arch;
I più usati, vista la loro completezza e stabilità, sono CVS e SVN. Subversion, comunque, sta lentamente sostituendo CVS, nel quale mancano funzionalità ormai diventate essenziali come:
-
L'Atomic Commit: nel caso il commit delle modifiche (ossia l'intero corpo delle modifiche) non venga completato, l'intero repository non viene corrotto;
-
Supporto nativo per i file binari: il CVS non è in grado di tenere traccia delle modifiche dei file binari e nel caso in cui viene forzato a farlo li danneggia;
-
Versioning delle directory: il CVS permette di tenere traccia delle modifiche solo sui file.
In questo articolo tratteremo l'installazione di SVN su Windows, la sua configurazione, la creazione di un repository e l'utilizzo di questo tramite TortoiseSVN.
Installazione
Come prima cosa è necessario scaricare l'installatore per Windows che si trova alle pagine di download del sito del progetto.
Una volta scaricato il file è necessario avviare l'installatore avviando l'eseguibile appena scaricato dall'archivio dei file di subversion. È importante eseguire l'installazione con i parametri di default se non si ha esperienza con questo tipo di software.
Configurazione
Quando vengono creati i repository sull'SVN viene generata una serie di cartelle e file sul disco contenenti le opzioni di default. Queste impostazioni vengono letti quando si eseguono operazioni sul repository, dando la possibilità di modificare i valori in tempo reale. Per poter iniziare ad usare l'SVN è necessario configurare correttamente il sistema per far partire all'avvio il server di subversion.
Per far ciò è necessario svolgere queste semplici operazioni seguendo il percorso suggerito: Start / Tutti i Programmi / Esecuzione Automatica. Eseguire un clic col tasto destro del mouse sulla cartella selezionata e selezionare dal menu la voce Apri; Aperta la cartella fare clic col destro all'interno di questa e selezionare Nuovo e poi Collegamento. A questo punto sarà necessario incollare queste righe per configurare il collegamento appena creato. Quando verrà richiesto il percorso del collegamento inserire:
C:ProgrammiSubversionbinsvnserve.exe -d -r C:SVNRepository
Premere Avanti. Quando verrà richiesto il nome del collegamento inserire:
SVN Server
Per completare la creazione del collegamento premere Fine. Una volta creato il collegamento eseguitelo in modo da avviare il server e poter usare SVN fin da subito.
Nota: avviato il software compare una console Dos: ciò potrebbe risultare fastidiosa per molti. Per poter nascondere questa finestra in automatico è necessario aprire le proprietà del collegamento e selezionare, dal menu Esegui, la voce Ridotta a Icona.
Creazione di un repository
Per utilizzare il programma va creato un repository, ossia un archivio da utilizzare per salvare i file. Per poter creare il repository, ed in generale amministrare i repository già creati, è necessario utilizzare il comando svnadmin
, comando che non dispone di un'interfaccia grafica e lavora con una console Dos. Per avviare la console Dos è necessario aprire il menu Start, cliccare su Esegui, scrivere il comando cmd
nella casella di testo ed infine premere Ok. A questo punto, nella console Dos appena comparsa, digitare:
cd C:ProgrammiSubversionbin
Per creare quindi il repository digitare:
svnadmin create C:SVNRepositoryRepositoryTest
All'interno del repository C:SVNRepositoryRepositoryTest c'è una cartella estremamente importante, ovvero quella contenente i file di configurazione con le impostazioni generali e le impostazioni di accesso:
-
authz, permette di definire a quali cartelle del repository gli utenti hanno accesso;
-
passwd, file contenente l'elenco di utenti/password che hanno accesso a questo repository;
-
svnserve.conf, contiene le configurazioni generali del repository.
Al momento non interessa impostare le password, perchè non dobbiamo abilitare l'autenticazione, quindi sarà necessario configurare solo il file svnserve.conf
per far funzionare correttamente l'SVN. Aprire il file svnserve.conf con il Notepad, o con il vostro editor di testo preferito, e sostituire il contenuto del file con il testo seguente:
[general] anon-access = write auth-access = write realm = Il mio primo repository
In questo modo utenti anonimi ed abilitati potranno accedere al repository dei sorgenti chiamato Il mio primo repository.
Utilizzare il repository
Per poter utilizzare il repository è necessario installare un frontend, ossia un'intrefaccia grafica per i comandi eseguibili tramite riga di comando. Ci sono svariati frontend per SVN, ma quello che tratteremo è TortoiseSVN: si integra con la Shell permettendo di gestire il repository tramite Explorer.
Il repository appena creato non è l'archivio sul quale si lavora, bensì un database centrale contenente tutte le modifiche effettuate. Effettivamente, quando si usa l'SVN, si lavora su una copia del repository chiamata Working Copy ('Copia di Lavoro'). Dopo aver generato il repository è necessario creare la propria Working Copy ed effettuare le modifiche su questa. Le modifiche, tramite i tool o frontend appositi, vengono poi trasferite sul repository in modo da renderle disponibili a tutti.
Una domanda che sicuramente sorgerà spontanea, dopo aver iniziato ad usare Subversion, è: "Cosa succede se due utenti modificano lo stesso file contemporaneamente?". Ebbene, in questi casi l'SVN forza l'ultimo Committer, ovvero chi invia le modifiche al repository, ad aggiornare la propria copia locale e correggere eventuale codice cambiato prima del suo Commit, ovvero prima del suo invio, per poi reinviare i dati una volta risolto il conflitto. Fatta questa breve introduzione alle Working Copy possiamo procedere all'installazione di TortoiseSVN per iniziare ad usare il repository creato. Innanzi tutto è necessario scaricare il frontend dalla sua pagina di download ospitata da Sourceforge, scegliendo naturalmente l'ultima versione disponibile.
Eseguito il download è necessario installarlo e riavviare Windows per poterlo usare correttamente. È importante creare la propria copia locale all'interno della document root del vostro Web Server in modo da poter applicare le modifiche al codice e vederle in tempo reale sul browser. Se avete installato Apache nella cartella di default, la document root si troverà al percorso C:ProgrammiApache GroupApachehtdocs. Accedete alla document root e create una cartella chiamata RepositoryTest.
Non è necessario nominare la cartella nello stesso modo del repository: questo, però, facilità la gestione della vostra copia locale poichè eviterete confusione con i nomi.
Una volta creata la cartella cliccate col tasto destro del mouse su questa, dal menu selezionate la voce SVN Checkout e nella finestra che comparirà andate ad inserire, nella prima casella di testo, l'Url svn://localhost/RepositoryTest, ovvero il percorso del vostro repository.
Nota: se usate firewall è necessario aprire la porta usata dall'svn, la numero 3690, sia per il protocollo UDP sia per il protocollo TCP, altrimenti non sarà possibile accedervi in nessun modo.
Una volta eseguita questa operazione la vostra Working Copy sarà inizializzata e pronta all'uso. La copia locale del repository sarà raggiungibile tramite il browser all'indirizzo http://localhost/RepositoryTest.
Le operazioni più comuni da eseguire sono:
-
Commit, che consiste nell'inviare le modifiche della propria copia di lavoro al repository;
-
Update, permette di aggiornare la propria copia locale con le modifiche presenti nel repository;
-
Delete, funzionalità che consente di eliminare files e directory dalla revisione corrente;
-
Revert, che permette di annullare tutte le modifiche eseguite ad un file, cartella o all'intera copia locale;
-
Update To Revision, operazione che dà la possibilità di aggiornare la vostra copia locale ad una specifica versione;
-
Show Log, che mostra l'elenco delle revisioni, con la descrizione, l'elenco dei file modificati, con il tipo di modifica ed eventualmente la possibilità di visualizzare il file in parallelo con quello presente nella copia locale;
È possibile eseguire tutte queste operazioni ciccando col tasto destro sulle cartelle presenti nella copia locale del repository o, per eseguire l'operazione sull'intero repository, nella cartella che contiene la copia locale,
Conclusioni
Questo articolo non vuole essere una guida completa all'utilizzo di software di controllo delle versioni ma un'introduzione per chi lavora in ambito web e vuole avere più sicurezza e più flessibilità nel proprio lavoro. Utilizzare un sistema di questo tipo permette anche di avere una copia di backup del lavoro e di tutte le modifiche effettuate dando non solo la possibilità di condividere il proprio codice sorgente con altri sviluppatori ma anche, in caso di necessità, da la possibilità di recuperare parte del codice sorgente che è stato modificato o eliminato, o file di revisioni precedenti.