Comment démarrer avec CVS

Sommaire

Créer la base CVS

On suppose qu'on a déjà installé CVS avec cygwin, et cclipse. On va mettre en place tout ce qu'il faut pour pouvoir partager du code source via CVS.

Le manuel officiel CVS est ici: http://ximbiot.com/cvs/manual/cvs-1.11.21/cvs.html
"Open Source Development with CVS" par Karl Fogel est mieux sur plusieurs points.

La procédure est la suivante (cf "Starting a project with CVS")

  1. Créer une base CVS :
    cvs -d chemin_absolu init
    # Par exemple:
    cvs -d F:/cvsroot init
    # F: sera naturellement un lecteur réseau
  2. remplir la base CVS avec un répertoire de sources:
    cd répertoire_où_sont_les_sources
    cvs -d F:/cvsroot import -m "Initial import." nom_module nom_du_fournisseur_source start

    Le nom_module est important; c'est le nom avec lequel on fera le checkout.

Et voilà, la base CVS est créée !

Travailler avec la base CVS

Maintenant on peut y accéder en ligne de commande:

cd répertoire_travail
cvs -d F:/cvsroot checkout nom_module

Si on veut se simplifier la vie on peut créer la variable d'environnement CVSROOT:

export CVSROOT=F:/cvsroot

Et alors après c'est plus simple:

cvs checkout nom_module

Mise à jour:

cd nom_module/sous_répertoire
# ... modifier fic1 et fic2; compiler et tester
cvs commit fic1 fic2
# enregister le commentaire de la mise à jour (terminer par . tout seul sur un ligne)

Récupérer les dernières mises à jour; ceci va "rafraichir" récursivement tous les sous-répertoires:

cvs update -d

Utiliser eclipse

Malheureusement eclipse n'est pas capable de traiter un référentiel CVS situé sur la même machine; il veut un accès réseau.

Bonne doc. en Français :
http://perso.wanadoo.fr/jm.doudoux/java/dejae/chap013.htm#chap_13

Open the preferences (Window > Preferences) and turn on the CVS label decorations (on page Workbench > Label Decorations and ensure CVS is checked).

Lancer un serveur CVS

Sur Windows il faut installer CVSNT .

Sur Linux il faut installer le paquetage cvs . Cela crée un fichier

/etc/xinetd.d/cvs

Sur Fedora, le répertoire racine de la base CVS est donné ainsi :

--allow-root=/var/cvs

Sur Mandrake, c'est donné dans un fichier indépendant

/etc/cvs/cvs.conf
comme ceci :
CVS_REPOS=/var/cvs

Ensuite, CVS se lance comme n'importe quel autre service:
/etc/init.d/cvs start
ou sur Fedora via
system-config-services

Travailler en client - serveur

Ayant lancé un serveur CVS comme expliqué ci-dessus, on lance les clients comme précédemment, ce qui change c'est l'identifiant du référenciel après -d :

cvs -d :pserver:jmv@192.168.0.3:/var/cvs checkout nom_module

Si par ailleurs le service ssh est installé et lancé, on peut accéder de manière cryptée ainsi :

cvs -d :ext:jmv@192.168.0.3:/var/cvs checkout nom_module

Les fichiers binaires

Par défaut rien n'est binaire. Donc faire un commit d'un fichier .jar le corrompt. Il faut déclarer le statut binaire des fichiers en fonction de leur suffixe .

$ cd /tmp
$ echo $CVSROOT
/var/cvs
$ cvs co CVSROOT/cvswrappers
U CVSROOT/cvswrappers
$ cd CVSROOT
$ gvim cvswrappers
$ tail -6 cvswrappers
# For example:
*.jar -k 'b'
*.ttf -k 'b'
*.jpg -k 'b'
*.png -k 'b'
*.gif -k 'b'

$ cvs commit cvswrappers
Checking in cvswrappers;
/mnt/home-hda1/jmv/cvsroot/CVSROOT/cvswrappers,v <-- cvswrappers
new revision: 1.2; previous revision: 1.1
done
cvs commit: Rebuilding administrative file database