CVS è un software indispensabile per controllare e gestire i sorgenti sui quali lavorano un numero cospicuo di programmatori. Prima del suo avvento, per condividere un progetto si usava tipicamente un server FTP su cui venivano "pubblicate" le modifiche fatte da ogni singolo sviluppatore su una parte di codice. Risulta chiaro che una metodologia del genere porta a dei problemi di consistenza: se il programmatore A modifica il file X e lo invia al server FTP, qualche secondo dopo il programmatore B esegue la stessa operazione senza prima scaricarsi X modificato, A perde tutto il lavoro fatto.
CVS, così come tutti i Control Version Systems, serve a risolvere questo genere di problemi. La sua crescita è correlata a quella del fenomeno open source, poiché è in questo campo che centinaia di programmatori operano su un medesimo set di file, quasi sempre senza un minimo di briefing (nel senso convenzionale del termine).
CVS può considerarsi uno standard de facto, ma questo non significa che rappresenti lo stato dell'arte nel settore dei sistemi di controllo delle versioni.
Subversion, questo è il nome del software che si candida come successore di CVS e si propone di colmarne le lacune, lavora come CVS. L'architettura è la medesima: un repository centrale su cui esiste la copia ufficiale dei file gestita dalla componente server ed un numero illimitato di copie locali gestite dalla componente client "in mano" agli sviluppatori.
Le differenze (sostanziali) tra CVS e Subversion sono le seguenti:
- controllo di versione su directory e meta-files;
- supporto per la rinomina dei files;
- le operazioni di commit sono atomiche;
- possibilità di integrare la parte server come modulo di apache;
- il costo computazionale è proporzionale alla dimensione dei cambiamenti e non alla dimensione dei file;
- manipolazione efficiente dei files binari: viene usato un algoritmo di "diffing" anche per i files binari;
- output non solo leggibile all'uomo ma anche parsabile da eventuali script personali.
Subversion lo potete trovare <a href="http://subversion.tigris.org/" target="_blank">qui</a> [LC]