Come Utilizzare CVS per il Controllo di Versioni

Un sistema di controllo di versioni è uno strumento software che tiene traccia di tutte le revisioni e le release del codice sorgente o della documentazione di un prodotto software. I motivi dell’uso di un programma di questo tipo sono:

  • Tenere traccia della storia di un file ed avere sempre la versione più stabile rilasciata
  • Permettere a più sviluppatori di lavorare sullo stesso progetto impedendo che qualcuno sovrascriva i cambiamenti apportati da qualcun’altro.

In questo articolo tratteremo di uno tra i più utilizzati di questi tipi di software, CVS ( Cuncurrent Versions System ). Si tratta di uno strumento open source largamente utilizzato su piattaforme UNIX, ma il cui porting è disponibile anche per altre piattaforme.
CVS utilizza i termini di “revisione” e “release” rispettivamente per le versioni dei singoli file e per l’intero progetto. Il programma inoltre memorizza tutte le revisioni in un database, detto repository, centrale, utilizzando una sottocartella per ogni progetto gestito. I concetti di base di un qualunque strumento di controllo della versione sono quelli di:

  • Check-out – estrazione della copia di un file dal repository e memorizzazione della copia stessa in una cartella di lavoro. In tal modo sarà possibile effettuare modifiche al file estratto.
  • Check-in – memorizzazione nel repository della copia modificata che va a sovrascrivere il file precedente.

Possiamo notare come:

  • I cambiamenti apportati al file nella cartella di lavoro non saranno visibili agli altri utenti finché non viene effettuata l’operazione di check-in.
  • CVS lavora in modalità client/server; non è quindi necessario che la cartella di lavoro sia sullo stesso elaboratore sul quale è in esecuzione CVS.

I metadati relativi al file di cui è stato effettuato il check-out sono memorizzati in una sottocartella situata nella directory di lavoro chiamata “CVS”. Ovviamente è possibile selezionare gli utenti che possono effettuare le operazioni di check-in e check-out di determinati file. La cartella in cui è memorizzato il repository viene specificata tramite la variabile d’ambiente CVSROOT o con il comando:

cvs –d cartella_di_lavoro

Per creare un nuovo repository occorre dare il comando:

cvs –d /opt/cvsroot init

L’opzione –d deve essere utilizzata con un qualsiasi comando che non operi su una cartella di lavoro già specificata in un’operazione di check-out; in alternativa è possibile definire una variabile d’ambiente CVSROOT con il comando setenv CVSROOT /opt/cvsroot, naturalmente gli utenti che usano sh o bash come shell possono modificare i file bashrc del proprio profilo ed esportare la variabile export CVSROOT=/opt/cvsroot. Una cartella specificata con l’opzione –d avrà comunque sempre la precedenza sulle altre impostazioni. Per creare il progetto occorre creare una cartella, portarsi in essa ed utilizzare il comando:

cvs import

Se ad esempio abbiamo modificato il file test.cpp, una volta copiato nella cartella del progetto, occorre effettuare il check-in con il comando cvs commit test.cpp. Buona norma, quando si effettua il check-in di un file, è di inserire un commento al file modificato come in questo esempio: cvs commit –m “aggiunto codice fiscale alla form utente” test.cpp.
Per vedere le differenze tra il file nel repository e quello locale si può dare il comando:

cvs diff test.cpp

se poi vogliamo aggiungere o eliminare un file alla lista del repository occorre dare il comando:

cvs add test1.cpp o cvs remove test.cpp

ovviamente per salvare le modifiche al repository occorre dare il comando cvs commit.
Come abbiamo già detto in precedenza cvs può lavorare anche in remoto con ssh, basta settare la variabile CVS_RSH su ssh. Una volta configurato ssh occorre creare una cartella di lavoro per il progetto test con il seguente comando:

cvs –d:ext:user@hostname:/path/to/repository checkout test

user@hostname è lo userid con il quale ci si connette al server, mentre ext serve per utilizzare rsh per la connessione. Per un eventuale accesso anonimo si utilizza il comando:

cvs –d :pserver:anonymous@anoncvs.esempio.com:/cvs/test login

il protocollo pserver abilita l’autenticazione tramite password.

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in Linux. Contrassegna il permalink.