Utiliser CVS sur lfo
Gilles LAMIRAL
$Revision: 1.54 $ $Date: 2004/03/18 00:01:51 $
Utiliser CVS sur lfo
______________________________________________________________________
Table des matières
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
______________________________________________________________________
Version générée le Jeudi 18 mars 2004
Vous trouverez la dernière version du présent document à l'adresse:
[1m1. CVS c'est quoi et pour qui[0m
CVS: Concurrent Versions System
Le logiciel [1mcvs [22mest 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.
[1m2. Liste de diffusion[0m
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:
Pour se désinscrire, envoyer un message à:
Pour s'inscrire, envoyer un message à:
Pour contacter le responsable de la liste:
Les archives existent mais ne sont pas encore accessibles.
[1m3. Permissions d'accès[0m
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 :
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.
[1m4. CVS, la toute première fois[0m
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
[1m5. Exemple à suivre[0m
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.
[1m6. Ajouter un répertoire dans la base[0m
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
[1m7. Ajouter un (ou plusieurs) fichier dans la base[0m
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 # ...
[1m8. Retirer un (ou plusieurs) fichier dans la base[0m
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
[1m9. Retrouver une ancienne version de fichier[0m
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.
[1m10. Passer de RCS à CVS[0m
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/[...]
[1m11. Synchronisation des horloges[0m
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
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.
[1m12. Recopie sur le site public[0m
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
[1m13. Questions/Réponses[0m
Q: [1mComment ne récupérer qu'une portion du site[0m
R: cvs checkout www.linux-france.org/la/portion/qui/minteresse
Q: [1mTout le site wlfo va t'il passer sous cvs ?[0m
R: A priori, non. Ne sont placés sous cvs que les fichiers nécessitant
plusieurs intervenants.
[1m14. Passage sous CVS d'une documentation existante[0m
Comme exemple, deux fichiers à mettre à jour, index.html
netscape_fr.html. La destination publique est . 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
[1m15. CVS pour une rubrique seule[0m
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.
[1m16. Liens utiles[0m
· Une introduction française
· Plus loin en français
· The GNU CVS documentation .
· The CVS bubbles
· The CVS book
· BSD Tricks:CVS
$Id: cvs.fr.m4,v 1.54 2004/03/18 00:01:51 gilles Exp gilles $
[1m17. Historique de ce document[0m
$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"