Il controllo di versione è una tecnologia che ogni buon programmatore dovrebbe utilizzare. L'obiettivo fondamentale di tutti i software che si occupano del controllo di versione è permettere a diversi sviluppatori di lavorare contemporaneamente su diversi file o addirittura sullo stesso file, automatizzando compiti come:
- tenere traccia di chi sta modificando che cosa
- unire le modifiche una volta complete
- segnalare eventuali conflitti
- tenere una copia di ogni precedente versione e fare in modo che sia facilmente recuperabile
Ci sono numerosi buoni motivi per cui questo sistema dovrebbe essere usato, anche dal singolo programmatore: il risparmio di tempo e di grattacapi durante le operazioni di salvataggio, di recupero di versioni precedenti, o di confronto tra diverse versioni, rende questo strumento prezioso per chiunque. Se poi i programmatori sono due o più e lavorano sullo stesso progetto, allora diventa imprescindibile.
Simone Carletti in uno dei suoi post elenca alcuni dei vantaggi dell'uso di SVN.
Tra i più famosi software di controllo di versione disponibili in ambiente open source ci sono CVS(Concurrent Version System), il suo erede Subversion, e il più recente GIT (sviluppato da Linus Torvalds). In questa guida ci focalizzeremo sull'installazione, configurazione e utilizzo di Subversion.
Subversion
Subversion (comunemente abbreviato in SVN), è un software gratuito e opensource. Anche se l'utilizzo prevalente di Subversion è da parte dei programmatori, la struttura e le caratteristiche lo rendono utile anche per gestire file di tipo diverso, ad esempio documentazione, manuali, e persino file binari (immagini).
Subversion nasce attorno al 2000 come alternativa a CVS, nel frattempo diventato obsoleto. Il suo intento dichiarato è risolvere i bug e i difetti intrinsechi di CVS, mantenendone però lo spirito e i concetti di base.
Rispetto a CVS, Subversion introduce:
- versionamento delle directories: con CVS il controllo di versione era applicato solo ai file, quindi le operazioni di copia e spostamento tra diverse directory non era gestito adeguatamente. Con Subversion viene tenuta traccia anche del contenuto di ogni singola directory e quindi lo spostamento di un file è a tutti gli effetti considerata una modifica, quindi rintracciabile e reversibile.
- commits atomici: una serie di modifiche viene applicata solo in blocco – se anche solo una di esse crea errori, non viene applicata nessuna delle modifiche inviate. Questo evita la creazione di versioni incomplete che dovrebbero poi essere corrette a mano.
- versionamento dei metadati: è possibile assegnare a file e directory delle proprietà personalizzate – dei veri e propri metadati – e mantenere lo storico anche delle modifiche a queste proprietà.
- astrazione dal livello di rete: l'accesso dal client al repository (cioè al deposito centralizzato dei files) può avvenire attraverso il protocollo HTTP (sfruttando un apposito modulo di Apache), attraverso un apposito server standalone (SVNServe), o direttamente attraverso il filesystem (ma solo nel caso in cui il repository sia situato sulla stessa macchina). In tutti questi casi, i comandi e le operazioni fondamentali non cambiano, così come non cambia la struttura del repository e delle copie di lavoro locali.
Nonostante nel frattempo siano nati altri strumenti, con concetti e soluzioni innovative, Subversion si sta tenendo aggiornato e sembra reggere la competizione. In questa guida utilizziamo la versione 1.5.