Utiliser CVS sur lfo

Gilles LAMIRAL

$Revision: 1.54 $ $Date: 2004/03/18 00:01:51 $
Utiliser CVS sur lfo

Version générée le Jeudi 18 mars 2004

Index des documents

Vous trouverez la dernière version du présent document à l'adresse:
http://www.linux-france.org/prj/lfoyer/

1. CVS c'est quoi et pour qui

2. Liste de diffusion

3. Permissions d'accès

4. CVS, la toute première fois

5. Exemple à suivre

6. Ajouter un répertoire dans la base

7. Ajouter un (ou plusieurs) fichier dans la base

8. Retirer un (ou plusieurs) fichier dans la base

9. Retrouver une ancienne version de fichier

10. Passer de RCS à CVS

11. Synchronisation des horloges

12. Recopie sur le site public

13. Questions/Réponses

14. Passage sous CVS d'une documentation existante

15. CVS pour une rubrique seule

16. Liens utiles

17. Historique de ce document


1. CVS c'est quoi et pour qui

CVS: Concurrent Versions System

Le logiciel cvs est un système de gestion de versions permettent de travailler en équipe sur les mêmes fichiers. Destiné à l'origine aux projets informatiques, il peut aussi être utilisé pour la maintenance d'un site web.

2. Liste de diffusion

Il existe une liste de diffusion destinée aux contributeurs du site travaillant avec CVS. Tout l'internet peux s'y inscrire ou y poster (moyennant confirmation). L'inscription est fortement recommendée pour les utilisateurs de CVS. Le traffic est léger. A chaque commit un courriel est envoyé sur la liste pour signaler que la base a été mise à jour. Dans le courriel se trouvent les fichiers ou répertoires modifiés ainsi que le Changelog écrit par l'auteur.

Le champ "From:" est ma propre adresse (sinon sympa se plaint d'une boucle) même si ce n'est pas moi qui fait le changement. Le "Reply-To:" est la liste elle-même. Le champ "To:" est "Undisclosed-Recipient::", ça c'est la faute à sendmail car le compte cvs n'est pas un "trusted user" (il force le champ "From:").

Pour écrire sur la liste, l'adresse est: mailto:cvs@listes.linux-france.org

Pour se désinscrire, envoyer un message à: mailto:cvs-unsubscribe@listes.linux-france.org

Pour s'inscrire, envoyer un message à: mailto:cvs-subscribe@listes.linux-france.org

Pour contacter le responsable de la liste: mailto:cvs-owner@listes.linux-france.org

Les archives existent mais ne sont pas encore accessibles.

3. Permissions d'accès

L'accès en écriture à la base cvs du site est réservée aux contributeurs ayant un compte Unix et passe systématiquement par une authentification ssh.

Si vous n'avez pas de compte unix, il suffit d'en demander un en expliquant ce vous comptez en faire.

Si vous ne connaissez pas ssh, vous pouvez lire le document ssh sur lfoyer :
http://www.linux-france.org/prj/lfoyer/doc/htm/ssh.fr.htm

Nous devons disposer de votre clef publique pour que vous puissiez lancer avec succès les commandes cvs. Pour cela, créer un fichier nommé id_dsa.pub dans votre répertoire de travail ($HOME) et renseignez-le avec votre clef publique.

Ce peut être une copie de votre fichier id_dsa.pub situé dans le répertoire $HOME/.ssh/ de votre machine personnelle. Au cas où vous auriez lu et appliqué les commandes du document "ssh", vous n'avez rien à copier puisque la copie est déjà faite.

Ensuite, signalez moi la disponibilité de ce fichier (ou sa mise à jour) par courriel, en précisant le nom de votre compte. Je ne prendrai pas en compte les clefs envoyées par courriel, par sécurité.

Les contributeurs sans compte Unix ne peuvent pas jouer avec cvs sur le site. Ils peuvent utiliser cvs chez eux afin de se familiariser avec son fonctionnement et surtout commencer à travailler avec un système de versions. Le logiciel rcs est compatible avec cvs car il utilise le même format de fichier.

Les contributeurs sans compte Unix peuvent en demander un à tout moment.

4. CVS, la toute première fois

Il faut comprendre que l'accès au compte cvs permet de mettre à jour n'importe quelle partie du site lfo.

Le premier "checkout" consiste à récupérer tout ce qui est sous CVS sur le site. Cela peut être assez long. Les fois suivantes seront plus courtes car seules les fichiers modifiés seront récupérés. Vous n'êtes pas non plus obligés de tout récupérer, cf rubrique "Questions/Réponses" de ce document.

Ensuite, libre à vous de modifier les fichiers, d'en ajouter d'autres et de mettre à jour la base CVS avec vos modifications.

Vous n'êtes pas obligé de tout passer sous CVS et vous pouvez avoir quelques fichiers sous CVS et d'autres via votre compte (et ce dans le même répertoire sur votre machine).

Vous pouvez faire votre premier "checkout" sans aucune crainte pour la base CVS situé sur le serveur lfo. Avec un checkout, il n'y a pas de modification du coté du serveur puisque c'est une simple recopie de la base CVS sur votre arborescence. Le danger vient seulement des commandes commit et import qui mettent à jour la base CVS du serveur avec les modifications faites sur votre machine. Cela doit être fait avec précaution.

# vous êtes chez vous, pas sur lfo

CVSROOT=:ext:cvs@linux-france.org:/home4/lf/cvs/
CVS_RSH=ssh
export CVSROOT CVS_RSH

# allez où bon vous semble pour travailler

cd && mkdir cvs_work && cd cvs_work

# récupération

cvs checkout www.linux-france.org 

5. Exemple à suivre

Voici un exemple de mise à jour. Je vous conseille de le pratiquer afin de vous familiariser avec cvs. Le fichier blabla.html est dédié à cet apprentissage, vous pouvez y faire ce que vous voulez. Ensuite, vous pouvez utiliser les mêmes commandes pour mettre à jour un autre fichier. J'utilise un copier-coller pur de ces commandes régulièrement. Vous pouvez utiliser un copier-coller pur aussi. Faites-le en douceur la première fois.

# vous êtes chez vous, pas sur lfo

CVSROOT=:ext:cvs@linux-france.org:/home4/lf/cvs/
CVS_RSH=ssh
export CVSROOT CVS_RSH

cd && cd cvs_work  # allez où bon vous semble pour travailler
cd www.linux-france.org/

# Mise à jour de votre arborescence

cvs -n update  -d # voir
cvs    update  -d # faire

# Ajouter quelques mots avec votre éditeur favori

vi blabla.html 

# Un commentaire utile 

cvs commit -m "test cvs par toto" blabla.html 

La base cvs permet de travailler à plusieurs sur les mêmes fichiers. Elle ne dispense pas d'informer des changements à l'équipe sur la liste mlfo. S'il apparait des conflits, cvs nous avertira, ils devront cependant être résolu "manuellement"; cvs n'est pas un magicien.

6. Ajouter un répertoire dans la base

Créer d'abord le nouveau répertoire "dossier" dans votre arborescence de travail, puis informer la base cvs avec la commande suivante :

mkdir dossier
cvs add dossier

7. Ajouter un (ou plusieurs) fichier dans la base

Créez d'abord votre fichier dans votre arborescence de travail, puis informez la base cvs avec la commande suivante.

Fichiers textes (ascii) :

cvs add fichier1 fichier2 # ...

Fichiers binaires (image, son, exécutable...) :

cvs add -kb fichier1 fichier2 # ...

Les fichiers images, son, exécutables ne doivent pas être archivés en mode texte. Vous pouvez informer cvs a posteriori avec la commande :

cvs admin -kb fichier1 fichier2 # ...

8. Retirer un (ou plusieurs) fichier dans la base

Eliminez d'abord votre fichier dans votre arborescence de travail, puis informez la base cvs avec la commande suivante.

cvs remove fichier1 fichier2 # ...
cvs commit

9. Retrouver une ancienne version de fichier

cvs log fichier.html # regarder les logs et les numéros de version.
cvs update -r 1.18 fichier.html # récupérez la version 1.18
cp fichier.html fichier2.html   # faites en une copie.
cvs update -A fichier.html      # libérez la contrainte.

10. Passer de RCS à CVS

Le format interne utilisé par CVS pour stocker les différentes versions de chaque fichier est exactement le même que pour RCS. RCS stocke les fichiers dans le repertoire courant ou le sous-répertoire ./RCS/ alors que CVS le stocke dans la base sur le serveur. Il suffit donc d'ENLEVER tous les verrous et de copier le fichier ",v" tel quel dans l'arborescence de la base, à l'endroit désiré dans l'arborescence /home/lf/cvs/www.linux-france.org/[...]

11. Synchronisation des horloges

Un accès en écriture dans une base cvs nécessite normalement une synchronisation des horloges de votre système avec celui qui détient la base. Cette synchronisation est parfaitement réalisé avec le protocole NTP (Network Time Protocol).

Pour de plus amples informations, consultez le site http://www.cis.udel.edu/~ntp/

Le logiciel xntp est peut-être déjà sur votre système. Dans le cas contraire, téléchargez et installez xntp3-5.93.tar.gz où une version ultérieure.

Utilisez les serveurs de temps publiques secondaires. Voici une configuration possible:

$ more /etc/ntp.conf 
server ntp.obspm.fr
server ntp.univ-lyon1.fr
server ntp.via.ecp.fr

Avec cette synchronisation, votre babasse changera d''heure au 4ème top des horloges radiophoniques.

Vous pouvez également réaliser cette synchronisation avec ntpdate.

12. Recopie sur le site public

Cette mise à jour est automatique à chaque commit, via le compte cvs. Cela signifie qu'une fois le commit réalisé, la synchronisation sur le site public se fait à xh20 ou plus tôt si

13. Questions/Réponses

Q: Comment ne récupérer qu'une portion du site
R: cvs checkout www.linux-france.org/la/portion/qui/minteresse

Q: Tout le site wlfo va t'il passer sous cvs ?
R: A priori, non. Ne sont placés sous cvs que les fichiers nécessitant plusieurs intervenants.

14. Passage sous CVS d'une documentation existante

Comme exemple, deux fichiers à mettre à jour, index.html netscape_fr.html. La destination publique est http://www.linux-france.org/prj/i18n/netscape/. Le fichier index.html sera renommé en presentation.html et index.html deviendra un lien symbolique.

Il y a d'autres fichiers dans le répertoire. Seuls presentation.html et netscape_fr.html seront mis dans la bas CVS. Les autres sont des binaires. Nous traiterons l'archivage des binaires ultérieurement.

# variables d'environnement
CVSROOT=:ext:cvs@linux-france.org:/home4/lf/cvs/
CVS_RSH=ssh
export CVSROOT CVS_RSH

# allons au travail
cd && cd cvs_work/www.linux-france.org

# récupérons le travail des autres
cvs -n update  -d  # voir
cvs    update  -d  # faire

# Création des nouveaux répertoires
# prj/i18n/netscape/ n'existent pas en local (ni dans la base CVS)
mkdir -p prj/i18n/netscape/ 
cvs add prj 
cvs add prj/i18n
cvs add prj/i18n/netscape
# ajout des fichiers en local

cp /where/the/files/are/before/index.html        prj/i18n/netscape/
cp /where/the/files/are/before/netscape_fr.html  prj/i18n/netscape/
cd prj/i18n/netscape/

# apparté: nenommage de  index.html en presentation.html
# un bon nommage est essentiel
mv index.html presentation.html
ln -s presentation.html index.html

# Description du fichier
cvs add -m "presentation et index netscape en francais" presentation.html

# Description de la version
cvs commit -m 'tel quel' presentation.html

# idem
cvs add -m "Details et contenu de netscape en francais" netscape_fr.html
cvs commit -m "tel quel" netscape_fr.html

# pas encore de différence
cvs diff

# nouvelles versions recus par email (dans /tmp/ par exemple)
# elles remplacent les anciennes versions
mv /tmp/index.html presentation.html
mv /tmp/netscape_fr.html netscape_fr.html

# differences
cvs diff

# mise à jour avec ajout de commentaires
cvs commit

15. CVS pour une rubrique seule

Vous pouvez utiliser le serveur lfo comme base de dépot. c'est possible si vous avez un compte Unix sur lfo. Vous pouvez créer une base dans votre arborescence et jouer avec. Avantages: aucun, sauf si vous utilisez plusieurs ordinateurs complètement indépendants pour contribuer ou si vous travailler à plusieurs sur une rubrique et que vous ne voulez pas étendre les droits d'écriture à l'ensemble des contributeurs ayant un compte Unix sur lfo. En résumé, help yourself.

16. Liens utiles

$Id: cvs.fr.m4,v 1.54 2004/03/18 00:01:51 gilles Exp gilles $

17. Historique de ce document

$Log: cvs.fr.m4,v $
Revision 1.54  2004/03/18 00:01:51  gilles
 sur la liste de diffusion cvs.

Revision 1.53  2004/03/17 04:26:51  gilles
mkdir

Revision 1.52  2003/10/27 01:26:39  gilles
Eclaircissements

Revision 1.51  2003/02/23 06:23:01  gilles
Changement de titre "Premiers pas" -> "Exemple à suivre"

Revision 1.50  2003/02/23 06:13:28  gilles
Ajout section "Retrouver une ancienne version de fichier"

Revision 1.49  2003/02/06 17:05:56  gilles
Deplacement de la section "Historique de ce document"

Revision 1.48  2003/02/06 16:57:33  gilles
Ajout section "Passer de RCS à CVS".

Revision 1.47  2002/10/09 23:27:15  gilles
Extension de la section "Premiers pas et suivants"

Revision 1.46  2002/09/26 22:28:22  gilles
mis en commantaire du tag dans
 "Passage sous CVS d'une documentation existante"

Revision 1.45  2002/09/12 02:33:43  gilles
Ajout ci dans "retrait"

Revision 1.44  2002/09/12 02:32:54  gilles
Ajout section "retrait fichier"

Revision 1.43  2002/07/27 10:29:29  gilles
Ajout section "Ajouter un (ou plusieurs) fichier dans la base"
Ajout section "Ajouter un répertoire dans la base"

Revision 1.42  2002/07/27 07:23:42  gilles
Ajout de la section "Historique de ce document"