Come utilizzare CVS sulle Linux

Autore: Claudio Sacerdoti Coen <sacerdot@cs.unibo.it>

Prima revisione: 01/11/1998, Ultima revisione: 29/09/2000


Contenuti:

  1. Premessa
  2. Che cosa è CVS?
  3. Perché dovrei utilizzare CVS?
  4. Come faccio ad utilizzare CVS?
  5. Come creo un semplice progetto in CVS?
  6. Come aggiungo un file/una directory ad un progetto CVS?
  7. Come modifico un file di un progetto CVS?
  8. Come cancello un file di un progetto CVS?
  9. Come rendo permanenti le modifiche effettuate?
  10. Come faccio a rilasciare una nuova release?
  11. Come faccio ad accedere all'ultima versione di un progetto?
  12. Come faccio a fare l'update di un progetto per ottenerne l'ultima versione o risolvere eventuali conflitti fra la mia versione e quella attuale?
  13. Come faccio a collegarmi ad un repository su un server remoto?

1 Premessa

Questa piccola guida all'utilizzo di CVS non vuole in alcun modo essere esaustiva, né sostituirsi alla guida utente (di 120 pagine) /usr/doc/cvs-1.9/cvs.ps o alla man-page di CVS (per altro estremamente scarna, datata e sicuramente incompleta). Vuole solamente fornire quell'insieme minimo di comandi necessari per iniziare l'utente ancora ignorante all'utilizzo di CVS.

I comandi di seguito esposti sono solo una piccola parte di quelli disponibili e non permettono di accedere a tutte quelle funzionalità che rendono indispensabile l'utilizzo di un ambiente quale CVS nel lavoro di gruppo. Sono però sufficienti a permettere di iniziare a lavorare fin da subito in modo proficuo, con l'intenzione che l'utente contemporaneamente inizi la lettura del manuale per imparare i restanti comandi e l'utilizzo di quelli già visti in maniera più avanzata ed approfondita.

Contenuti

2 Che cosa è CVS?

CVS è un sistema di controllo delle versioni. Lo posso utilizzare ogni volta che ho la necessità di lavorare con più persone contemporaneamente alla stesura di un documento.

Contenuti

3 Perché dovrei utilizzare CVS?

CVS mi permette di modificare i file in comune senza preoccuparmi del fatto che altre persone stiano facendo lo stesso. Infatti CVS si preoccupa per me di mantenere tutte le versioni successive dello stesso file e di risolvere (chiedendomi come) gli eventuali conflitti fra le mie modifiche e quelle degli altri.

Contenuti

4 Come faccio ad utilizzare CVS?

Per condividere il mio progetto con altri tramite CVS è necessario che il mio gid sia quello del gruppo del quale sia io che i miei compagni facciamo parte. Tale gruppo deve essere creato chiedendo a quei poveretti degli amministratori di sistema (sí, questa guida è stata scritta da un amministratore).

Inoltre, mi devo sempre ricordare, prima di modificare un progetto tramite CVS, di settare il mio gid a quello del gruppo tramite newgrp.

Infine, è necessario che setti (per esempio nel .bash_profile o nel .login) la variabile d'ambiente CVSROOT a /home/CVS

Contenuti

5 Come creo un semplice progetto in CVS?

Ipotizzando di voler creare un progetto condiviso con i membri del gruppo disney composto da una directory chiamata pippo contenente un file vuoto chiamato pluto, faccio in questo modo:

    newgrp disney
    mkdir pippo
    cd pippo
    touch pluto
    cvs import pippo disney versione0
    cd ..
    rm -rf pippo
    cvs checkout pippo
	  
dove pippo è il nome della directory dove verrà mantenuto il progetto, versione0 è il nome della versione iniziale del progetto.

ATTENZIONE: mi verrà chiesto di scrivere qualche riga nel log di progetto per spiegare che cosa sto facendo utilizzando il mio editor preferito (quello indicato dalla variabile di ambiente EDITOR). Nel caso non abbia specificato tale variabile, sarò condannato all'utilizzo di vi.

Contenuti

6 Come aggiungo un file/una directory ad un progetto CVS?

Per aggiungere, per esempio, il file paperino alla directory pippo creata al punto 5 faccio in questo modo:

    cd pippo
    touch paperino
    cvs add paperino
         
In seguito debbo ricordarmi di fare il commit delle modifiche come spiegato al punto 9.

Contenuti

7 Come modifico un file di un progetto CVS?

Lo modifico (come mi pare) e basta! Debbo solo ricordarmi in seguito di fare il commit delle modifiche (vedi punto 9).

Contenuti

8 Come cancello un file di un progetto CVS?

Prima lo cancello (come mi pare) e poi comunico a CVS di averlo fatto volutamente. Per esempio per cancellare il file pluto dalla directory disney creata al punto 5 procedo in questo modo:

   rm pluto
   cvs remove pluto
          
In seguito debbo ricordarmi di fare il commit delle modifiche come spiegato al punto 9.

Contenuti

9 Come rendo permanenti le modifiche effettuate?

È sufficiente che io faccia cvs commit all'interno della directory del progetto che ho modificato. Se ci sono conflitti con le modifiche dei miei compagni, il commit non sarà possibile e dovrò fare un update (vedi punto 12).

Contenuti

10 Come faccio a rilasciare una nuova release?

Ogni volta che faccio commit (vedi punto 9), è bene che esplicitamente dichiari di voler rilasciare una nuova release in modo da far verificare a CVS che non ci siano file in conflitto o cose strane. Dopo aver rilasciato la release debbo cancellare la directory del progetto.

Per esempio, per rilasciare una nuova release del progetto pippo creato al punto 5 debbo procedere in questo modo:

    cd ..      # ora sono nella directory contenente la directory pippo
    cvs release pippo
    rm -rf pippo
          

Contenuti

11 Come faccio ad accedere all'ultima versione di un progetto?

Per esempio, per accedere all'ultima versione del progetto contenuto nella directory pippo faccio così: cvs checkout pippo

Contenuti

12 Come faccio a fare l'update di un progetto per ottenerne l'ultima versione o risolvere eventuali conflitti fra la mia versione e quella attuale?

Per fare l'update del progetto, è sufficiente che io mi porti nella directory contenente la mia ultima versione del progetto e scriva cvs update . Eventuali conflitti con quella esistente mi verranno fatti notare e potrò risolverli manualmente editando i file in conflitto (i conflitti saranno stati evidenziati nel file per aiutarmi ad individuarli).

Contenuti

13 Come faccio a collegarmi ad un repository su un server remoto?

È sufficiente che io setti opportunamente la CVSROOT e poi faccia login prima di dare gli altri comandi e logout quando ho finito (pena non poter fare login nuovamente). Ci sono diversi protocolli per accedere ai repository remoti; la forma della CVSROOT indica il protocollo voluto. Quello più diffuso è quello con autenticazione con password che richiede questa sintassi sintassi per la CVSROOT è:

        :pserver:username@hostname:path
       
Per esempio, per collegarsi al repository anonimous di Gnome debbo usare
        :pserver:anonymous@anoncvs.gnome.org:/cvs/gnome
       
Per fare login il comando è semplicemente
       cvs login
       
Mi viene chiesta una password che debbo lasciare vuota nel caso di repository CVS anonimi.
Per fare logout il comando, con molta fantasia, è
       cvs logout
       

Contenuti