Sia che si tratti di documenti che di file sorgente di un progetto software, adottare un meccanismo adeguato per la sincronizzazione delle modifiche e per il
controllo di versione è un passo essenziale per progetti non banali.
Utilizzare cartelle condivise e rinonimare file e cartelle prima di modificarle è una pratica molto rischiosa, che non mette al riparo da modifiche concorrenti. Quello che ci vuole in questi casi è un sistema di controllo delle versioni o
VCS.
Al di là dello specifico sistema adottato, il primo impatto con questi strumenti mette a disagio l'utente inesperto, sia perché è costretto a
cambiare il proprio modo di lavorare, sia perché si trova di fronte a una serie di concetti non facili da digerire alla prima esperienza.
Per avvicinare l'utente ai concetti che stanno dietro ai sistemi di controllo delle versioni può essere utile un tutorial, che offra una prima introduzione ad
alto livello in maniera chiara e concisa.
Questo è l'obiettivo di
due sintetiche guide di
Kalid Azad, il quale prova a spiegare i concetti chiave dei sistemi di controllo di versione
centralizzati e
distribuiti con un
approccio visuale. Oltre a presentare i concetti fondamentali e a definire un glossario dei termini utilizzati un quest'ambito, le guide offrono una serie di schemi grafici, che illustrano in modo intuitivo scenari di utilizzo.
Nella
prima guida vengono illustrati i concetti di check-in, check-out,
branching,
tagging e gestione dei conflitti tipici dei sistemi di controllo di versione centralizzati come
CVS,
SVN o
Microsoft Visual SourceSafe.
La
seconda guida introduce l'
approccio distribuito, tipico ad esempio di
Git o
Mercurial, evidenziando le differenze con quello centralizzato e analizzando vantaggi e svantaggi. In particolare vengono messi in risalto il concetto di
merge delle modifiche e il
modello push/pull per l'organizzazione di un progetto distribuito.
Entrambe le guide sono solo dei
punti di partenza per avvicinarsi ai sistemi di versionamento in generale. Per l'approfondimento di strumenti specifici esse forniscono diversi riferimenti a risorse online e offline, compreso un
video di una lezione di
Linus Torvalds sui sistemi distribuiti.