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