Con questo articolo comincio a parlarvi dei sistemi di controllo di versione, riferendomi in particolare ai due software liberi più famosi in questo campo: CVS e Subversion.
Partirò da una panoramica generale sui concetti comuni per poi trattare nel dettaglio tecnico i comandi che i due strumenti mettono a disposizione e la loro integrazione con alcuni ambienti di sviluppo.
Ma prima di addentrarci nel tecnico, cos’è il controllo di versione?
“Controllo di versione” significa lavorare ad un progetto composto da uno o più file che volete modificare e migliorare nel tempo, senza privarvi della libertà di tornare sui vostri passi.
Un’esempio aiuta a capire meglio.
Il vostro lavoro di oggi è basato sul miglioramento delle performance di un certo algoritmo che il vostro collega ha terminato di scrivere la scorsa settimana.
Nei test effettuati nei giorni passati, il suo algoritmo si è dimostrato capace di produrre risposte corrette. Purtroppo, all’aumentare del numero di utenti contemporanei, si è dimostrato anche lento.
Quindi procedete alle modifiche.
La settimana successiva vi accorgete che le vostre migliorie hanno anche introdotto un baco. Il vostro collega, l’autore originale, vi chiede quindi di mostrargli quali parti del suo codice avete cambiato.
In un ambiente di lavoro sprovvisto di un sistema di controllo di versione, l’unico modo per dare al collega una risposta è trovare il backup del file.
Il backup? E chi l’ha fatto il backup? E dove lo trovo il backup?
Prima o poi il backup salta fuori e la risposta arriva di lì a poco.
Tempo necessario per capire le differenze tra i due file: 2 ore.
In un ambiente dotato di un sistema di controllo di versione invece, è possibile chiedere direttamente al sistema di mostrarci le differenze fra le due versioni del file. Ma non solo: abbiamo a disposizione uno storico con l’elenco di TUTTI i cambiamenti subiti dal file, dal momento nel quale è comparso per la prima volta fino ad oggi. Possiamo addirittura decidere di abbandonare la strada intrapresa e di chiedere al sistema di sostituire l’ultima versione memorizzata con quella della settimana precedente.
Esistono diversi software liberi capaci di svolgere questo compito: il più famoso è senz’altro CVS, acronimo di Concurrent Versions System, e da qualche anno a questa parte si sta diffondendo Subversion, nato con lo scopo di sopperire ai limiti tecnici di CVS e quindi di fornire agli utenti più funzioni e più flessibilità.
Entrambi i software ruotano attorno al concetto di “repository”, il “luogo” dove vengono memorizzati i file.
Il repository è unico ed è memorizzato in un server accessibile da rete.
Ogni utente ha una copia locale del repository, dove lavora indipendentemente dagli altri utenti. Quando un utente decide di essere arrivato ad un punto cospicuo del suo lavoro, aggiorna il repository remoto con le modifiche che ha apportato al suo repository locale.
Il sistema avvisa gli altri utenti della rete (in modi più o meno evidenti) che alcuni file dei loro repository locali sono diventati obsoleti e necessitano di essere aggiornati.
Nei prossimi articoli scenderò più nel dettaglio tecnico. Il prossimo articolo, sia per motivi storici che didattici, sarà dedicato a CVS.
Nel frattempo qualche link, per permettere ai più ardimentosi di addentrarsi da soli in questo piccolo mondo.
- Controllo versione su Wikipedia
- CVS
- Subversion
Tags: none





