24.4. Introduzione a CVS

CVS può essere utilizzato anche ai fini della sincronizzazione, quando si modificano frequentemente singoli file nel formato di testo ASCII oppure sorgenti di programma. Con CVS si possono sincronizzare anche dati in altri formati (p.es. file JPEG), ma questo comporta un enorme volume di dati visto che ogni variante di un file viene memorizzata permanentemente sul server CVS. Ed inoltre in questi casi non si sfrutta appieno il vero potenziale di CVS.

CVS si può utilizzare per la sincronizzazione dei dati solo se tutte le postazioni di lavoro hanno accesso allo stesso server!

Mentre con unison sarebbe pensabile ad esempio anche uno scenario di questo tipo:

A > B > C > S

A, B, C sono computer che possono elaborare i dati in questione.

24.4.1. Impostare un server CVS

Sul server si trovano tutti i dati validi, ovvero soprattutto la versione attuale di ogni file. Anche ad es. una postazione di lavoro fissa può fungere da server. E' consigliabile eseguire regolarmente un back-up dei dati che risiedono sul server CVS.

Si consiglia di impostare un server CVS in modo che agli utenti sia permesso di accedervi tramite SSH, in tal modo sarà ad es. possibile che una postazione di lavoro fissa funga da server.

Se l'utente è noto al server come ed il software del CVS è stato installato sia sul server che sul client (p.es. un notebook), sul lato client bisogna impostare le seguenti variabili di ambiente:

CVS_RSH=ssh CVS_ROOT=@server:/serverdir

Con il comando cvs  init si inizializza il server CVS dal lato client (basta farlo una sola volta).

Infine bisogna stabilire un nome per la sincronizzazione. Per fare questo sul client bisogna andare in una directory che contiene file che dovranno essere amministrati dal CVS (può essere anche vuota). Il nome della directory non fa differenza ed nel nostro esempio utilizziamo il nome synchome. Per impostare il nome della sincronizzazione su synchome, si deve immettere:

cvs import synchome  _0

Attenzione: molti comandi del CVS richiedono un commento. A tale scopo CVS lancia un editor (più precisamente l'editor definito nella variabile di ambiente $EDITOR, altrimenti lancia il vi). Si può evitare che venga lanciato l'editor immettendo il commento già nella riga di comando, ad es

cvs import -m 'questa è una prova' synchome  _0

24.4.2. Utilizzare il CVS

A partire da questo momento si può effettuare da un computer qualsiasi il check out dal repository di sincronizzazione :

cvs co synchome

Si avrà una nuova sottodirectory synchome sul client. Se si sono fatte delle modifiche che si vogliono comunicare al server, bisogna entrare nella directory synchome (o anche in una sottodirectory di synchome) ed immettere il seguente comando:

cvs commit

Con questo comando vengono trasmessi al server tutti i file sotto la directory attuale appartenenti al CVS locale. Per trasferire solo singoli file e/o singole directory, si dovranno indicare esplicitamente:

cvs commit file1 ... directory1 ...

Prima di trasmettere nuovi file o nuove directory al server si dovrà eseguire un:

cvs add file1 ... directory1 ...

ed eseguire in seguito il trasferimento con

cvs commit file1 ... directory1 ...

Se cambiate postazione di lavoro, dovrete, se non lo avete già fatto durante sessioni di lavoro precedenti sulla stessa postazione, eseguire il check out del repository. La sincronizzazione con il server viene inizializzata tramite il seguente comando:

cvs update

Sussiste inoltre la possibilità di eseguire l'update di singoli file e/o singole directory:

cvs update file1 ... directory1 ...

Se volete vedere in anteprima le differenze rispetto alle versioni memorizzate sul server, immettete cvs diff oppure in modo esplicito:

cvs diff file1 ... directory1 ...

In più avete anche la possibilità di farvi mostrare quali file verrebbero aggiornati, ecco il comando: cvs-nq update. Durante l'update incontrerete tra l'altro le seguenti lettere indicanti lo stato del file:

U

la versione locale è stata aggiornata; ciò vale per tutti i file che il server mette a disposizione, ma che non esistono localmente.

M

la versione locale è stata modificata. Se è stata modificata sul server le modifiche possono essere allineate anche localmente.

P

la versione locale è stata aggiornata tramite una patch.

?

questo file non è nel CVS

M indica i dati che vengono attualmente elaborati. Per rispedire le modifiche al server va eseguito il comando cvs commit Se invece si intende rinuciare alle proprie modifiche per assumere lo stato attuale del server, si elimina la copia in locale e si esegue nuovamente un update. Il file mancante verrà recuperato dal server.

Se diversi utenti modificano lo stesso file nello stesso punto, CVS non è in grado di decidere quale versione utilizzare. In questi casi all'update si una C. Per risolvere il conflitto vi sono vari modi di procedere. Inserire dei contrassegni di conflitto nei punti in questione dei file da editare manualmente. Per chi si avvicina per la prima volta ad applicazioni del genere si consiglia di eseguire operazioni del genere tramite tool come cervisia. Come alternativa si può cambiare anche il nome al proprio file e eseguire nuovamente un update. Conclusi gli interventi sul file si dovrebbe eseguire un cvs commit. In tal modo viene ridotta la probabilità che si verificano dei conflitti.

24.4.3. Ulteriore documentazione

Le possibilità di impiego del CVS sono immense e noi abbiamo fornito solo una breve introduzione. Per degli approfondimenti rimandiamo alla documentazione reperibile tra l'altro ai seguenti indirizzi: http://www.cvshome.org/ e http://www.gnu.org/manual/