!header
!replace internal _bgcolor_ by $wims_name_bgcolor in  $style
$style
<table border="0" cellpadding="5" cellspacing="0" width="100%">
<tr>
<td class="faq">
<br>
!href cmd=new&job=index Introduction
<br>
!href cmd=new&job=debuter Débuter
<br>
!href cmd=new&job=documentation Documentations
<br>
!href cmd=new&job=ressource Ressources disponibles

<br>
<hr noshade>
!href cmd=new&job=classe Classes
<br>
!href cmd=new&job=forum Forum
<br>
!href cmd=new&job=promo Promouvoir
<br>
!href cmd=new&job=edu Pédagogie
<br>
<hr noshade>
!href cmd=new&job=document Documents
<br>
!href cmd=new&job=logiciel Logiciels
<br>
!href cmd=new&job=oef Exercices OEF
<br>
!href cmd=new&job=modtool Modtool
<br>
!href cmd=new&job=graphics Graphiques
<br>
<hr noshade>
!href cmd=new&job=portal Gestion d'un établissement
<br>
!href cmd=new&job=gestion Gestion d'un site
<br>
!href cmd=new&job=knowims KNOWIMS
<br>
!href cmd=new&job=total La FAQ en entier
<br>
<hr noshade>

!href cmd=new&job=link Liens ressources WIMS
<br>
<hr noshade>


</td>
<td valign="top"><table width="100%" class="faq_head"><tr><td class="faq_head2">Utilisation de cvs</td></tr></table><p>
<a href="http://www.cvshome.org/">CVS</a> (Concurrent Version System) est
un système de gestion de documents qui facilite énormément le
travail collaboratif. Un serveur central stocke des fichiers, que des
clients peuvent récupérer, comparer, modifier via internet. Le serveur
stocke non seulement les documents, mais toute leur histoire : qui a modifié
quoi, quand et pourquoi ? Il permet à tout moment d'obtenir un document tel
qu'il se présentait à un instant arbitraire fixé. 
</p>
<p>Par exemple les sources de cette <em>Foire Aux Questions</em> sont disponibles  via un serveur CVS. Le gestionnaire du serveur établit des règles pour savoir qui est habilité à faire quoi. En général, tout un chacun peut
récupérer les fichiers, mais seul un petit groupe a le droit de les
modifier.</p>

<p> Si vous voulez accéder aux fichiers stockés sur le serveur, le programme
<tt class="c">cvs</tt> doit être installé sur votre système. La plupart des
distributions Linux l'ont, et il y a des <a href="http://www.wincvs.org/"
>clients graphiques</a> pour Windows ou Mac OS X. Nous décrivons
l'utilisation via la ligne de commande : adaptez les instructions si vous
utilisez un client graphique.</p> 

<h3>Ce qu'il faut faire la première fois : </h3>
<ul>
<li> Copier la ligne suivante dans votre shell : 
<pre class="c">
cvs -d :pserver:cvs@pari.math.u-bordeaux.fr:/home/cvskb/WIMS login
</pre>
</li><li>
Rentrer un mot de passe vide lorsque cela est demandé. 
</li><li><p>Copiez la ligne suivante dans votre shell : 
<pre class="c">
cvs -d :pserver:cvs@pari.math.u-bordeaux.fr:/home/cvskb/WIMS co FAQ
</pre>
Un répertoire <tt class="e">FAQ</tt> sera créé sur votre disque dur,
contenant les fichiers de la Foire Aux Questions <em>(copie locale)</em>.
Vous pouvez déplacer ce répertoire, mais autant se placer directement au
bon endroit.</li></ul>

<h3>Ce qu'on peut faire ensuite: </h3>

<i>Dans ce qui suit : "copie locale" signifie donc la copie qui se trouve sur votre 
ordinateur. </i>

Allez dans le répertoire <tt class="e">FAQ</tt> puis taper la commande
<pre class="c">
    cvs update
</pre>
pour mettre à jour votre copie locale. 

<h3>Si vous êtes habilité à modifier des fichiers</h3>
<p>
Voici quelques commandes de base. Elles ne fonctionnent que si vous les tapez
depuis le répertoire <tt class="e">FAQ</tt>.
</p>
<ul><li>Commencer par mettre à jour votre copie locale (la copie du serveur 
a peut-être été modifiée par d'autres depuis votre dernière mise à jour, comme
vous voulez certainement tenir compte de leur travail, vous devez récupérer 
ces données  sur votre ordinateur (copie locale)) : 
<pre class="c">
    cvs update
</pre>
Les fichiers de votre copie locale concernés par la mise à jour sont listés : 
  <ul>
  <li> <tt class="d">U</tt>(pdated) si un fichier de votre copie locale
  auquel vous n'aviez pas touché est mis à jour. C'est aussi ce qui se produit
  quand un nouveau fichier a été rajouté sur le serveur, qui n'existait pas 
  dans votre copie locale.</li>

  <li><tt class="d">M</tt>(odified) s'il a été modifié dans votre
  copie locale mais n'est pas affecté par la mise à jour.</li>

  <li><tt class="d">P</tt>(atched) s'il a été modifié dans la
  copie locale <em>et</em> sur le serveur par un autre développeur,
  <em>mais</em> que CVS arrive à s'en sortir tout seul : vos modifications
  sont identiques ou affectent des morceaux différents du fichier.</li>

  <li><tt class="d">C</tt>(onflict) s'il y a <a href="#conflit">conflit</a> :
  comme ci-dessus, mais CVS ne s'en sort pas tout seul. Si vous consultez
  ce fichier dans votre copie locale, il contient des marqueurs délimitant
  les zones litigieuses. Corrigez et déposez votre nouvelle version.</li>
  </ul>
</li>

<li><p>Si vous avez modifié chez vous (sur votre ordinateur) des fichiers 
et que vous voulez les déposer sur le serveur
<pre class="c">
    cvs commit
</pre>
Pour ne déposer que <em>certains</em> fichiers modifiés (si le reste n'est
pas prêt) :
<pre class="c">
    cvs commit fichier1 fichier2
</pre>
Un <a href="#edit">éditeur de texte</a> est lancé, expliquez rapidement les
modifications que vous avez apportées. Puis quittez l'éditeur. Si vous
n'avez rien mis dans le log, une confirmation vous est demandée.

</li>

<li>Pour vérifier les modifications que vous avez faites sur votre copie
locale par rapport à l'état du serveur lors de votre dernière mise à jour.
<pre class="c">
    cvs diff
</pre>
Ce n'est pas la différence entre votre copie et l'état actuel du serveur, mais
entre  votre copie et l'état du serveur <em>au moment de la dernière 
synchronisation que vous avez faite</em>. Pour savoir si quelqu'un a modifié
quelque chose, utilisez plutôt 
<tt class="c">cvs log</tt> ou <tt class="c">cvs update -n</tt>.

</li>
<li>Pour ajouter des fichiers, cela se fait en deux étapes. Vous prévenez 
d'abord que vous allez en ajouter, puis vous confirmez. 
<pre class="c">
    cvs add fichier1 fichier2
    cvs commit
</pre>
Même chose pour supprimer des fichiers:
<pre class="c">
    cvs delete fichier1 fichier2
    cvs commit
</pre>
</li>
<li>
Pour vérifier l'historique des modifications : 
<pre class="c">
    cvs log
</pre>
</li>
</ul>

<p>Si vous n'êtes pas content de vos modifications, et que vous voulez tout
annuler, il suffit d'effacer le fichier fautif, et de refaire un 
<tt class="c">cvs update</tt>: le fichier manquant sera re-créé. Attention de ne
pas effacer un répertoire <tt class="e">CVS</tt> par contre : il contient
de l'information cruciale pour communiquer avec le serveur, et vous seriez
obligé de tout effacer et refaire un <tt class="c">cvs checkout</tt>.
</p>
<hr noshade>

<h4><a name="edit">À propos de l'éditeur de textes</a></h4>
<p>
Sous Unix, l'éditeur par défaut est <tt class="c"></tt>, qui a toutes
les chances d'être <tt class="c">vi</tt>. Toutes les applications qui
désirent lancer un éditeur de texte, en particulier <tt class="c">cvs</tt>, utiliseront
celui-là. Changez la variable d'environnement <tt class="c">EDITOR</tt> si
<tt class="c">vi</tt> ne vous plaît pas.
</p>

Normalement, il est bien suffisant ceci dit: voici le minimum vital pour s'en
sortir
<ul>
<li> Taper <tt class="c">i</tt>(nsert) </li>
<li> Taper un court message descriptif</li>
<li> Taper <tt class="c">Esc</tt> (repasse en mode commande)</li>
<li> Taper <tt class="c">:x</tt> puis <tt class="c">Entree</tt> (sauve et
quitte)</li>
</ul>

<hr noshade>

<h4><a name="conflit">À propos des conflits</a></h4>
Imaginons que le fichier <tt class="e">toto</tt> contient les lignes
<pre class="c">
    A = 10
    B = 10
</pre>
au moment de votre mise à jour, puis que deux protagonistes modifient la
première ligne dans leur copie locale, l'un par
<pre class="c">
    A = 20
</pre>
l'autre par
<pre class="c">
    A = 0
</pre>
Lorsque le premier dépose sa version par <tt class="c">cvs commit</tt>, tout
se passe bien. Par contre quand le deuxième veut déposer la sienne, le
serveur refuse: le fichier <tt class="e">toto</tt> n'est pas <em>up to date</em>.
Pour régler ceci, le deuxième protagoniste fait un <tt class="c">cvs update</tt>
et regarde le contenu de <tt class="e">toto</tt> sur sa copie locale:
<pre class="c">
<<<<<<< toto
    A = 0
=======
    A = 20
>>>>>>> 1.120
    B = 10
</pre>
qui veut dire que la copie locale contenait <tt class="c">A = 0</tt>, et
le serveur (version 1.120 de <tt class="e">toto</tt>) <tt class="c">A = 20</tt>. La
ligne concernant <tt>B</tt> est à l'extérieur de la zone délimitée par
<pre class="c">
<<<<<<<
    ...
>>>>>>> 
</pre>
elle n'est donc pas concernée par le conflit.
 </td></tr></table>

!tail
