CVS (Concurrent Versions System)  

CVS (Concurrent Versions System)

Ressources

Le livre (online) Open Source Development with CVS by Karl Fogel

Version Control with CVS, sur devshed.com

Installation du repository :

créer un répertoire cvsroot (mkdir cvsroot), puis créer une variable d'environnement $CVSROOT pointant sur ce répertoire (export CVSROOT=/home/olly/cvsroot, par exemple)

cvs init crée ensuite le repository dans le répertoire $CVSROOT.

Mettre un projet sous CVS

cvs import : aller dans le répertoire contenant les sources, puis cvs import -m ``sources initiales'' rep mon_projet start. rep est le chemin du répertoire dans le repository contenant le projet (ici $CVSROOT/rep/), kohonen est un nom donné au projet, start est un ``release tag?''.

édition du fichier module : permet de remplacer les longs répertoire par un nom de module.

cvs add xxx.c permet d'ajouter le fichier xxx.c au repository (seulement après un checkout), prends effet après un cvs commit.

cvs remove xxx.c permet d'effacer xxx.c du repository

Récuperer un projet sous CVS en local

cvs checkout prj : crée un nouveau répertoire nommé prj, puis y insére les fichiers sources. prj est soit un nom de module, soit un répertoire du repository. S'il s'agit d'un chemin d'accès comportant plusieurs sous-répertoire, le chemin sera intégralement recréé à partir du répertoire courant. Au lieu d'un projet, il est également possible de récuperer uniquement un fichier du projet. Ex : cvs checkout prj/main.cpp

Récupérer un projet sur une machine distante

depuis une machine de confiance (via rsh)

La connection au serveur cvs sur une machine distante se fait via rsh. Il est donc nécessaire de placer dans le .rhosts du $HOME de l'utilisateur gérant le projet sur la machine distante une ligne autorisant la connection d'un utilisateur donné (vous) depuis la machine locale. Cette ligne est de la forme : hostname user

L'utilisation d'un repository distant ne diffère alors que par le format du nom du repository:

:METHOD:USER@HOSTNAME:/path/to/repository

Par exemple : cvs checkout -d:server:olly@quoi.nimporte.fr:/home/olly/cvsroot

autres cas : via connection dialup, avec authentification

La premiere etape consiste a configurer la partie serveur : il faut que inetd lance cvs pserver lorsqu'il recoit une connection sur le port cvs (2401 par defaut). Pour cela, il faut placer la ligne suivante dans le fichier inetd.conf : cvspserver  stream  tcp  nowait  root  /usr/local/bin/cvs cvs -allow-root=/home/olly/cvsroot pserver. Il est egalement necessaire d'ajouter dans /etc/services l'entree suivante : cvspserver 2401/tcp. On relance alors inetd et le tour est joué.

Côté client, on se connecte de la fàçon suivante :

-1ère étape, login sur la machine distante :

cvs -d:pserver:user@ma.machine.com:/chemin/vers/cvsroot login
Il suffit ensuite de taper son mot de passe sur  machine.com pour s'y logger.
 

- 2eme étape, récupération des sources du projet (prj dans cet exemple)

cvs -d:pserver:user@ma.machine.com:/chemin/vers/cvsroot checkout prj

Si l'on souhaite autoriser l'accès a des tierces personnes sans pour autant divulguer son nom d'utilisateur, il est nécéssaire de créér un fichier passwd sour ~/cvsroot.
Ce fichier est de la forme :
olly:rKa5jzULzmhOo
anonymous:XR4EZcEs0szik
melissa:tGX1fS8sun6rY

Chaque ligne correspond a un utilisateur autorisé du cvspserver, et comprends un nom d'utilisateur ainsi qu'un password encrypté.
Pour encrypter un password, il faut écrire le petit programme en perl suivant (nommé cvscrypt par exemple):

#!/usr/bin/perl

srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);

print "${crypttext}\n";

ensuite %> cvscrypt texte donnera quch comme WngvB7xtQchkg, que l'on copie-collera dans passwd
 

Récupération des modifications au projet effectués par d'autres personnes

cvs update : cette commande éxécuté depuis le répertoire de travail permet de mettre à jour la version de travail, notamment si la version du repository a été modifiée par d'autres développeurs.

cvs diff xxx.c : permet de comparer la version de xxx.c obtenue lors du checkout avec celle de la copie de travail (dans le répertoire courant). cvs diff -u permet d'obtenir une version plus lisible

cvs commit xxx.c : stocke xxx.c dans le repository, après avoir lancé l'éditeur déterminé par $CVSEDITOR afin d'écrire une description des modifications. Pour plus de simplicité, il est possible de faire directement cvs commit -m ``description des modifications'' xxx.c.

cvs release -d prj : avec le répertoire prj dans le répertoire courant, ceci permet d'effacer la copie de travail de prj. release permet habituellement de vérifier que toutes les modifications ont été ``committed''.
 

Ressources additionnelles

Le livre (online) Open Source Development with CVS by Karl Fogel
 

About this document ...

CVS (Concurrent Versions System)

 This document was generated using the LaTeX2HTML translator Version 96.1-h (September 30, 1996) Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.

The command line arguments were:
latex2html -split 0 cvs.tex.

The translation was initiated by Olivier ELEMENTO on mar fév 1 09:19:15 CET 2000


Olivier ELEMENTO

 

Installation du repository :

créer un répertoire cvsroot (mkdir cvsroot), puis créer une variable d'environnement $CVSROOT pointant sur ce répertoire (export CVSROOT=/home/olly/cvsroot, par exemple)

cvs init crée ensuite le repository dans le répertoire $CVSROOT.

Mettre un projet sous CVS

cvs import : aller dans le répertoire contenant les sources, puis cvs import -m ``sources initiales'' rep mon_projet start. rep est le chemin du répertoire dans le repository contenant le projet (ici $CVSROOT/rep/), kohonen est un nom donné au projet, start est un ``release tag?''.

édition du fichier module : permet de remplacer les longs répertoire par un nom de module.

cvs add xxx.c permet d'ajouter le fichier xxx.c au repository (seulement après un checkout), prends effet après un cvs commit.

cvs remove xxx.c permet d'effacer xxx.c du repository

Récuperer un projet sous CVS en local

cvs checkout prj : crée un nouveau répertoire nommé prj, puis y insére les fichiers sources. prj est soit un nom de module, soit un répertoire du repository. S'il s'agit d'un chemin d'accès comportant plusieurs sous-répertoire, le chemin sera intégralement recréé à partir du répertoire courant. Au lieu d'un projet, il est également possible de récuperer uniquement un fichier du projet. Ex : cvs checkout prj/main.cpp

Récupérer un projet sur une machine distante

depuis une machine de confiance (via rsh)

La connection au serveur cvs sur une machine distante se fait via rsh. Il est donc nécessaire de placer dans le .rhosts du $HOME de l'utilisateur gérant le projet sur la machine distante une ligne autorisant la connection d'un utilisateur donné (vous) depuis la machine locale. Cette ligne est de la forme : hostname user

L'utilisation d'un repository distant ne diffère alors que par le format du nom du repository:

:METHOD:USER@HOSTNAME:/path/to/repository

Par exemple : cvs checkout -d:server:olly@quoi.nimporte.fr:/home/olly/cvsroot

autres cas : via connection dialup, avec authentification

La premiere etape consiste a configurer la partie serveur : il faut que inetd lance cvs pserver lorsqu'il recoit une connection sur le port cvs (2401 par defaut). Pour cela, il faut placer la ligne suivante dans le fichier inetd.conf : cvspserver  stream  tcp  nowait  root  /usr/local/bin/cvs cvs -allow-root=/home/olly/cvsroot pserver. Il est egalement necessaire d'ajouter dans /etc/services l'entree suivante : cvspserver 2401/tcp. On relance alors inetd et le tour est joué.

Côté client, on se connecte de la fàçon suivante :

-1ère étape, login sur la machine distante :

cvs -d:pserver:user@ma.machine.com:/chemin/vers/cvsroot login
Il suffit ensuite de taper son mot de passe sur  machine.com pour s'y logger.
 

- 2eme étape, récupération des sources du projet (prj dans cet exemple)

cvs -d:pserver:user@ma.machine.com:/chemin/vers/cvsroot checkout prj

Si l'on souhaite autoriser l'accès a des tierces personnes sans pour autant divulguer son nom d'utilisateur, il est nécéssaire de créér un fichier passwd sour ~/cvsroot.
Ce fichier est de la forme :
olly:rKa5jzULzmhOo
anonymous:XR4EZcEs0szik
melissa:tGX1fS8sun6rY

Chaque ligne correspond a un utilisateur autorisé du cvspserver, et comprends un nom d'utilisateur ainsi qu'un password encrypté.
Pour encrypter un password, il faut écrire le petit programme en perl suivant (nommé cvscrypt par exemple):

#!/usr/bin/perl

srand (time());
my $randletter = "(int (rand (26)) + (int (rand (1) + .5) % 2 ? 65 : 97))";
my $salt = sprintf ("%c%c", eval $randletter, eval $randletter);
my $plaintext = shift;
my $crypttext = crypt ($plaintext, $salt);

print "${crypttext}\n";

ensuite %> cvscrypt texte donnera quch comme WngvB7xtQchkg, que l'on copie-collera dans passwd
 

Récupération des modifications au projet effectués par d'autres personnes

cvs update : cette commande éxécuté depuis le répertoire de travail permet de mettre à jour la version de travail, notamment si la version du repository a été modifiée par d'autres développeurs.

cvs diff xxx.c : permet de comparer la version de xxx.c obtenue lors du checkout avec celle de la copie de travail (dans le répertoire courant). cvs diff -u permet d'obtenir une version plus lisible

cvs commit xxx.c : stocke xxx.c dans le repository, après avoir lancé l'éditeur déterminé par $CVSEDITOR afin d'écrire une description des modifications. Pour plus de simplicité, il est possible de faire directement cvs commit -m ``description des modifications'' xxx.c.

cvs release -d prj : avec le répertoire prj dans le répertoire courant, ceci permet d'effacer la copie de travail de prj. release permet habituellement de vérifier que toutes les modifications ont été ``committed''.
 

Ressources additionnelles

Le livre (online) Open Source Development with CVS by Karl Fogel
 

About this document ...

CVS (Concurrent Versions System)

 This document was generated using the LaTeX2HTML translator Version 96.1-h (September 30, 1996) Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.

The command line arguments were:
latex2html -split 0 cvs.tex.

The translation was initiated by Olivier ELEMENTO on mar fév 1 09:19:15 CET 2000


Olivier ELEMENTO

mar fév 1 09:19:15 CET 2000