Configuration personnelle des versificateurs, RCS, CVS, SVN en vue de convertir mes scripts versifiés RCS vers CVS puis SVN.

Historique et motivation:
Après de lourdes pertes et des scripts écrit plusieurs fois, j'ai décidé de passer par les logiciels de versifications en local afin de mettre de l'ordre dans 15 ans de travail chaotique, de scripts donc les noms ne m'évoque plus rien, stockés ça et là sur plusieurs systèmes. 
J'ai opter pour RCS en un premier temps car il été simple à gérer et surtout les autres CVS, Subversion me faisais carrément peur, vu l'épaisseur de la documentation en US Langage. Donc ce document il est avant tout pour moi et me sers quand je me rappelle plus comment faire.

Ce topo est le mixt de plusieurs sources et juste de le retour console de ma propre mixture pour faire fonctionner en un premier temps CVS, puis la conversion de mes scripts sur RCS vers CVS et de CVS vers SVN.  Donc il montre comment faire pour créer un dépôt CVS.
Les commandes simples pour gérer CVS, puis pour passer de RCS à CVS et enfin de passer de CVS à SVN.
C'est assorti de quelques remarques et de piège à éviter.

Création d'un dépôt CVS et initialisation de ce dépôt:

Création du dépôt:
mkdir /home/commun/cvsroot
puis ajouter dans .bashrc les lignes:

CVSROOT=/home/commun/cvsroot  
export CVSROOT


Ceci initialisera votre variable d'environnement cvs sur le dépôt
Puis on initialise ce dépôt comme suit: ( mais au lieu d'initialiser avec: cvs init)

cvs -d /home/commun/cvsroot init
chown -R alain:alain /home/commun/cvsroot
chmod g+rwxs /home/commun/cvsroot/CVSROOT


CVSROOT=:local:/home/commun/cvsroot

# pendant ce temps je créé avec root
[root@localhost /]# cd /var/lock
[root@localhost lock]# mkdir cvs
[root@localhost lock]# cd /var/lock/cvs
[root@localhost cvs]# mkdir CVSROOT
[root@localhost cvs]# chown -R alain:alain /var/lock/cvs/CVSROOT
[root@localhost cvs]# chmod g+rwxs /var/lock/cvs/CVSROOT

# puis avec alain
$ mkdir cvs_admin && cd cvs_admin
$ cvs -d /home/commun/cvsroot checkout CVSROOT
$ cd CVSROOT

puis j'ai édité config en modifiant (comme le préconise lfo dans http://www.linux-france.org/prj/edu/archinet/systeme/ch50s02.html)
SystemAuth=no
LockDir=/var/lock/cvs
TopLevelAdmin=no
LogHistory=TOEFWUPCGMAR
RereadLogAfterVerify=always

puis:
cvs commit
# qui m'a affiché un log que j'ai fermer sans ajout de texte
# puis au moment de libérer l'archive avec:
cd ..
cvs release -d CVSROOT
# il m'a répondu que la variable d'environnement n'était pas prise en compte encore, normal je l'avais pas encore fait dans mon .bashrc
# par contre une fois redémarrer en root ça le fait.

-------------------------
Gestion d'un projet en mode non connecté
Création d'un test (module en CVS)
Vos projets sont connus sous le terme de module dans CVS. Création du module test

[alain@localhost atelier]$ cd ..
[alain@localhost commun]$ cd cvsroot
[alain@localhost cvsroot]$ mkdir test            # création du module test
[alain@localhost cvsroot]$ chown alain:alain ./test    # donner les propriétés et groupe
[alain@localhost cvsroot]$ chmod g+rwxs ./test        # donner les droits au groupe rwxs
[alain@localhost cvsroot]$ su
Mot de passe :
[root@localhost cvsroot]# mkdir /var/lock/cvs/test    # pareil dans /var/lock/cvs
[root@localhost cvsroot]# chown alain:alain /var/lock/cvs/test
[root@localhost cvsroot]# chmod g+rwxs /var/lock/cvs/test
[root@localhost cvsroot]# exit
exit
[alain@localhost cvsroot]$ cd
[alain@localhost ~]$ mkdir -p Projets/test            # création de votre répertoire de travail
[alain@localhost ~]$ cd Projets/test && cp /etc/host* .        # copier quelques fichier de conf de /etc/ dans Projets/test/
# importation du projet
[alain@localhost test]$ cvs -d /home/commun/cvsroot import -m "Création du module test" test LFO V1
N test/host.conf
N test/hosts.deny
N test/hosts
N test/hosts.allow

No conflicts created by this import

[alain@localhost test]$ cd .. && rm -rf test/ && ls -la        # cd .. et efface test et ce qu'il contient et montre le résultat
total 8
drwxrwxr-x.  2 alain alain 4096  4 juil. 15:30 .
drwx------. 56 alain alain 4096  4 juil. 15:14 ..

[alain@localhost ~]$ cvs -d /home/commun/cvsroot co test

# qui m'est refuser mais aurai dû être bon
cvs [checkout aborted]: cannot make directory /var/lock/cvs/CVSROOT: Permission denied
# avec su pardieu ça passe
[alain@localhost ~]$ su
Mot de passe :
[root@localhost alain]# cvs -d /home/commun/cvsroot co test
cvs checkout: Updating test
U test/host.conf
U test/hosts
U test/hosts.allow
U test/hosts.deny
[root@localhost alain]# cd test && ls -al
total 28
drwxrwxr-x.  3 alain alain 4096  4 juil. 15:37 .
drwx------. 57 alain alain 4096  4 juil. 15:36 ..
drwxrwxr-x.  2 alain alain 4096  4 juil. 15:37 CVS
-rw-r--r--.  1 root  root    26  4 juil. 15:26 host.conf
-rw-r--r--.  1 root  root   141  4 juil. 15:26 hosts
-rw-r--r--.  1 root  root   370  4 juil. 15:26 hosts.allow
-rw-r--r--.  1 root  root   460  4 juil. 15:26 hosts.deny

# Éditez le fichier hosts et apportez y quelques modifications, validez vos modifications

[root@localhost test]# cvs commit
cvs commit: Examining .
Checking in hosts.allow;
/home/commun/cvsroot/test/hosts.allow,v  <--  hosts.allow
new revision: 1.2; previous revision: 1.1
done
Checking in hosts.deny;
/home/commun/cvsroot/test/hosts.deny,v  <--  hosts.deny
new revision: 1.2; previous revision: 1.1
done

[root@localhost test]# cvs status
cvs status: Examining .
===================================================================
File: host.conf            Status: Up-to-date

   Working revision:    1.1.1.1    Sun Jul  4 13:26:02 2010
   Repository revision:    1.1.1.1    /home/commun/cvsroot/test/host.conf,v
   Sticky Tag:        (none)
   Sticky Date:        (none)
   Sticky Options:    (none)

===================================================================
File: hosts                Status: Up-to-date

   Working revision:    1.1.1.1    Sun Jul  4 13:26:02 2010
   Repository revision:    1.1.1.1    /home/commun/cvsroot/test/hosts,v
   Sticky Tag:        (none)
   Sticky Date:        (none)
   Sticky Options:    (none)

===================================================================
File: hosts.allow          Status: Up-to-date

   Working revision:    1.2    Sun Jul  4 13:46:56 2010
   Repository revision:    1.2    /home/commun/cvsroot/test/hosts.allow,v
   Sticky Tag:        (none)
   Sticky Date:        (none)
   Sticky Options:    (none)

===================================================================
File: hosts.deny           Status: Up-to-date

   Working revision:    1.2    Sun Jul  4 14:01:07 2010
   Repository revision:    1.2    /home/commun/cvsroot/test/hosts.deny,v
   Sticky Tag:        (none)
   Sticky Date:        (none)
   Sticky Options:    (none)

# dans un terminal connectez-vous avec un utilisateur différent
[alain@localhost cvsroot]$ su asynchrone
Mot de passe :
[asynchrone@localhost cvsroot]$ cd
[asynchrone@localhost ~]$ mkdir -p Projets
[asynchrone@localhost ~]$ cd Projets
[asynchrone@localhost Projets]$ cvs -d /home/commun/cvsroot co test
cvs checkout: Updating test

# ajoutez des fichiers au projet test
[asynchrone@localhost Projets]$ cd test
[asynchrone@localhost test]$ cp /etc/aliases . && cp /etc/fstab .
[asynchrone@localhost test]$ cvs add aliases fstab
cvs add: scheduling file `aliases' for addition
cvs add: scheduling file `fstab' for addition
cvs add: use 'cvs commit' to add these files permanently
[asynchrone@localhost test]$ cvs commit -m "ajout du fichier aliases et de fstab" aliases fstab
RCS file: /home/commun/cvsroot/test/aliases,v
done
Checking in aliases;
/home/commun/cvsroot/test/aliases,v  <--  aliases
initial revision: 1.1
done
RCS file: /home/commun/cvsroot/test/fstab,v
done
Checking in fstab;
/home/commun/cvsroot/test/fstab,v  <--  fstab
initial revision: 1.1
done

# libérez votre archive

[asynchrone@localhost test]$ cd ..
[asynchrone@localhost Projets]$ cvs release -d test
You have [0] altered files in this repository.
Are you sure you want to release (and delete) directory `test': y

# retournez sur le compte initial
[asynchrone@localhost Projets]$ exit
exit
[alain@localhost cvsroot]$ cd
[alain@localhost ~]$ cd Projets/test
[alain@localhost test]$ cvs -n update
cvs update: Updating .
U aliases
U fstab
[alain@localhost test]$ cvs update
cvs update: Updating .
U aliases
U fstab

# liberez votre archive
[alain@localhost test]$ cd ..
[alain@localhost Projets]$ cvs release -d test
You have [0] altered files in this repository.
Are you sure you want to release (and delete) directory `test': yes

-------------------------------------------------------
Gestion d'un projet en mode connecté

Définissez maintenant les variables suivantes (server étant le nom ou l'adresse ip d'une machine distante et user votre compte sur cette dernière) votre clef publique ssh devra se trouver dans le fichier authorized_keys de la machine distante, afin de ne pas devoir ressaisir le mot de passe à chaque action de cvs. pour plus de détails voir le cours sur ssh, ainsi que les pages de manuel.

CVSROOT=:ext:user@server:/usr/local/cvsroot
CVS_RSH=ssh

ajouter dans /etc/services:

cvspserver      2401/tcp

dans /etc/inetd.conf

cvspserver stream tcp nowait cvs /usr/bin/cvs cvs --allow-root=/usr/local/cvsroot pserver

forcez inetd à prendre en compte les modifications

killall -HUP inetd

récupérez le module test du serveur distant

cd Projets
cvs co test