<!doctype linuxdoc system>
	 
<!-- 	$Id: cvs.fr.m4,v 1.54 2004/03/18 00:01:51 gilles Exp gilles $	 -->

<!-- Bienvenue dans le monde SGML et m4 -->
<!--


	

-->
<article>

<titlepag>
<title>Utiliser CVS sur lfo</title>
<author>
<name>
<htmlurl 
	name="Gilles LAMIRAL" 
	url="mailto:glamiral@linux-france.org?subject=lfoyer 0.01">
</name>
</author> 

<date>
$Revision: 1.54 $   $Date: 2004/03/18 00:01:51 $ 
</date>

<abstract>Utiliser CVS sur lfo
</abstract>
</titlepag>
<toc>

<p>
Version générée le Jeudi 18 mars 2004
<!-- 
-->

<#if output="html">
<p>
<htmlurl url="../../" name="Index des documents">
</#if>

<p>
Vous trouverez la dernière version du présent document à l'adresse:
<newline> <tt><url url="http://www.linux-france.org/prj/lfoyer/"></tt>


<sect>CVS c'est quoi et pour qui
<p>
    
CVS: Concurrent Versions System
    
Le logiciel <bf>cvs</bf> 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.


<sect>Liste de diffusion
<p>

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:
<url url="mailto:cvs@listes.linux-france.org">

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

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

Pour contacter le responsable de la liste:
<url url="mailto:cvs-owner@listes.linux-france.org">

Les archives existent mais ne sont pas encore accessibles.

<sect>Permissions d'accès
<p>

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 :<newline> 
<url url="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é
<tt>id_dsa.pub</tt> dans votre répertoire de travail (<tt>$HOME</tt>) et
renseignez-le avec votre clef publique.

Ce peut être une copie de votre fichier <tt>id_dsa.pub</tt> situé dans
le répertoire <tt>$HOME/.ssh/</tt> 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.


<sect>CVS, la toute première fois
<p>

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.

<verb>
# 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 
</verb>


<sect>Exemple à suivre

<p> Voici un exemple de mise à jour. Je vous conseille de le
pratiquer afin de vous familiariser avec cvs. Le fichier
<tt>blabla.html</tt> 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.

<verb>
# 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 

</verb>

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.

<sect> Ajouter un répertoire dans la base
<p>

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

<verb>
mkdir dossier
cvs add dossier
</verb>


<sect> Ajouter un (ou plusieurs) fichier dans la base
<p>

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

Fichiers textes (ascii) :
<verb>
cvs add fichier1 fichier2 # ...
</verb>

Fichiers binaires (image, son, exécutable...) :
<verb>
cvs add -kb fichier1 fichier2 # ...
</verb>

Les fichiers images, son, exécutables ne doivent pas être archivés en
mode texte. Vous pouvez informer cvs a posteriori avec la commande :
<verb>
cvs admin -kb fichier1 fichier2 # ...
</verb>

<sect> Retirer un (ou plusieurs) fichier dans la base
<p>

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

<verb>
cvs remove fichier1 fichier2 # ...
cvs commit
</verb>

<sect> Retrouver une ancienne version de fichier
<p>

<verb>
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.
</verb>

<sect> Passer de RCS à CVS
<p>

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/[...] 

<sect>Synchronisation des horloges
<p>

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 <url
url="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 <tt>xntp3-5.93.tar.gz</tt> où une
version ultérieure.

Utilisez les serveurs de temps publiques secondaires. Voici une
configuration possible:
<verb>
$ more /etc/ntp.conf 
server ntp.obspm.fr
server ntp.univ-lyon1.fr
server ntp.via.ecp.fr
</verb>

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

Vous pouvez également réaliser cette synchronisation avec
<tt>ntpdate</tt>.
     
<sect>Recopie sur le site public
<p>

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 

<sect>Questions/Réponses
<p>

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

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

<sect>Passage sous CVS d'une documentation existante
<p>

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

Il y a d'autres fichiers dans le répertoire. Seuls
<tt>presentation.html</tt> et <tt>netscape_fr.html</tt> seront mis dans
la bas CVS. Les autres sont des binaires. Nous traiterons l'archivage
des binaires ultérieurement.
    
<verb>
# 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

</verb>

<!--
# un petit tag
cd && cd cvs_work
cvs rtag PUB_`date '+%Y_%m_%d_%H_%M_%S'` www.linux-france.org # date+heure
-->


<sect>CVS pour une rubrique seule
<p>

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.

<sect>Liens utiles
<p>

<itemize>

<item>
<url name="Une introduction française"
url="http://echo-linux.alienor.fr/articles/cvs/cvs.html">

<item>
<url name="Plus loin en français"
url="http://www.idealx.org/fr/doc/cvs/cvs_monobloc.html">

<item> 
<url url="http://www.gnu.org/manual/cvs/"
name="The GNU CVS documentation">.

<item> 
<url url="http://www.loria.fr/~molli/cvs-index.html"
name="The CVS bubbles">

<item> 
<url url="http://cvsbook.red-bean.com/" name="The CVS book">
       
<item>
<url url="http://www.onlamp.com/lpt/a/796" name="BSD Tricks:CVS">

</itemize>

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

<sect>Historique de ce document
<p>

<verb>
$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"

</verb>
   

 </article> 
 
<!-- Local IspellDict: francais -->
 
 
