2002-12-20 18:38:42 +01:00
|
|
|
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
|
|
|
<!DOCTYPE html
|
|
|
|
|
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
|
|
|
|
|
"tuteurs://DTD/tml.dtd">
|
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<title>CVS</title>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
|
2002-12-21 06:48:42 +01:00
|
|
|
|
<h1>Le contr<74>le de versions avec CVS</h1>
|
2002-12-20 18:38:42 +01:00
|
|
|
|
|
2005-09-16 00:48:08 +02:00
|
|
|
|
<p><code>CVS</code> est un logiciel Unix pour g<>rer diff<66>rentes versions
|
|
|
|
|
de beaucoup de fichiers produits <20>ventuellement par de multiples
|
|
|
|
|
utilisateurs.</p>
|
2002-12-20 18:38:42 +01:00
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Par exemple, les tuteurs informatique utilisent <code>CVS</code> pour
|
|
|
|
|
g<EFBFBD>rer ce site.
|
|
|
|
|
</p>
|
|
|
|
|
|
2005-09-16 00:48:08 +02:00
|
|
|
|
<h2>Pourquoi CVS ?</h2>
|
|
|
|
|
|
|
|
|
|
<h3>L'enfer, c'est les autres</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Supposons par exemple que vous conceviez un m<>moire de ma<6D>trise en
|
|
|
|
|
collaboration avec un camarade, ou encore que vous <20>criviez un programme
|
|
|
|
|
informatique en collaboration avec une <20>quipe de d<>veloppeurs. Plusieurs
|
|
|
|
|
sc<EFBFBD>narii-catastrophes peuvent <20>tre envisag<61>s, et vous pouvez <20>tre s<>r
|
|
|
|
|
qu'au moins l'un d'entre eux se r<>alisera t<>t ou tard :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<ol>
|
|
|
|
|
<li> l'un des contributeurs efface par erreur tout ou partie du travail
|
|
|
|
|
commun men<65> jusque l<>, alors m<>me que vous approchiez de son
|
|
|
|
|
terme ;</li>
|
|
|
|
|
|
|
|
|
|
<li> un contributeur apporte des corrections <20> une version obsol<6F>te du
|
|
|
|
|
travail commun, car il ne savait pas o<> trouver la version la plus
|
|
|
|
|
r<EFBFBD>cente ;</li>
|
|
|
|
|
|
|
|
|
|
<li> deux contributeurs travaillaient simultan<61>mlent sans le savoir, et
|
|
|
|
|
le deuxi<78>me a effac<61> sans le vouloir tout le travail du
|
|
|
|
|
premier ;</li>
|
|
|
|
|
|
|
|
|
|
<li> un contributeur a commis de nombreuses erreurs, et l'on doit
|
|
|
|
|
revenir sur chacune de ses modifications, en esp<73>rant ne pas laisser
|
|
|
|
|
d'erreurs ; </li>
|
|
|
|
|
|
|
|
|
|
<li>etc., etc.</li>
|
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h3>La solution : CVS</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
L'id<69>al, pour <20>viter ces probl<62>mes, serait de pouvoir concilier deux
|
|
|
|
|
exigences apparemment contradictoires :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<ol>
|
|
|
|
|
<li> centraliser les versions officielles pour <20>viter toute
|
|
|
|
|
ambigu<EFBFBD>t<EFBFBD> ;</li>
|
|
|
|
|
|
|
|
|
|
<li> d<>centraliser les versions de travail, sur lesquelles les
|
|
|
|
|
contributeurs apportent leurs modifications.</li>
|
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
CVS r<>unit ces deux avantages, en respectant les principes
|
|
|
|
|
suivants :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<ol>
|
|
|
|
|
<li> centralisation des versions officielles ;</li>
|
|
|
|
|
<li> num<75>rotation des versions ;</li>
|
|
|
|
|
<li> possibilit<69> de retour <20> une version ant<6E>rieure ;</li>
|
|
|
|
|
<li> gestion des conflits entre deux modifications contradictoires des
|
|
|
|
|
m<EFBFBD>mes fichiers ;</li>
|
|
|
|
|
<li> d<>centralisation des r<>pertoires de travail, ce qui permet <20>
|
|
|
|
|
plusieurs utilisateurs de travailler simultan<61>ment, et de ne pas
|
|
|
|
|
officialiser les modifications tant qu'elles ne sont pas termin<69>es.</li>
|
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Pour vous initier <20> CVS, nous allons successivement vous pr<70>senter
|
|
|
|
|
comment mettre un projet sous CVS, puis comment travailler au quotidien
|
|
|
|
|
sous CVS.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h2>Pr<50>liminaires <20> l'utilisation de CVS</h2>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Pour mettre des projets sous CVS, il faut proc<6F>der en deux temps :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<ol>
|
|
|
|
|
<li> cr<63>er un r<>pertoire de d<>p<EFBFBD>t CVS (en anglais
|
|
|
|
|
<em>repository</em>), o<> seront stock<63>es toutes les versions officielles
|
|
|
|
|
et leurs modifications ;</li>
|
|
|
|
|
|
|
|
|
|
<li> ajouter <20> ce r<>pertoire les diff<66>rents projets que vous voulez
|
|
|
|
|
mener <20> l'aide de CVS.</li>
|
|
|
|
|
</ol>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h3>Cr<43>er un r<>pertoire de d<>p<EFBFBD>t CVS (<em>repository</em>)</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Commen<EFBFBD>ons par cr<63>er un r<>pertoire de d<>p<EFBFBD>t, c'est-<2D>-dire un r<>pertoire
|
|
|
|
|
o<EFBFBD> CVS stocke toutes les versions et leurs
|
|
|
|
|
modifications. Rassurez-vous : CVS investit toute son ing<6E>niosit<69>
|
|
|
|
|
pour r<>duire au maximum l'espace disque utilis<69>, en ne retenant <em>que
|
|
|
|
|
les modifications</em>, au lieu de recopier <20> chaque fois l'int<6E>gralit<69>
|
|
|
|
|
des fichiers d'un projet.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Pour cela, il faut d'abord cr<63>er mat<61>riellement ce r<>pertoire, par
|
|
|
|
|
exemple <code>$HOME/cvs</code>, puis cr<63>er la variable d'environnement
|
|
|
|
|
CVSROOT :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~ $</span> mkdir $HOME/cvs
|
|
|
|
|
<span class="prompt">bireme ~ $</span> CVSROOT="$HOME/cvs"
|
2005-11-04 15:59:12 +01:00
|
|
|
|
<span class="prompt">bireme ~ $</span> export CVSROOT
|
2005-09-16 00:48:08 +02:00
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Mais attention ! dans ce cas, la variable CVSROOT dispara<72>tra quand
|
|
|
|
|
vous vous d<>loguerez ou fermerez le terminal courant. Aussi faut-il
|
2005-11-04 16:01:06 +01:00
|
|
|
|
<EFBFBD>crire dans votre fichier <code>.profile</code> (au moins dans le cas de la
|
|
|
|
|
configuration des machines de l'ENS<4E>; sur une machine personnelle <20>a peut
|
|
|
|
|
<EFBFBD>tre diff<66>rent) :
|
2005-09-16 00:48:08 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
2005-11-04 15:59:12 +01:00
|
|
|
|
CVSROOT="$HOME/cvs"; export CVSROOT
|
2005-09-16 00:48:08 +02:00
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
|
|
|
|
Une fois que ce r<>pertoire existe, il faut <20> faire les
|
|
|
|
|
pr<EFBFBD>sentations <3B> avec CVS. Tapez :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~ $</span> cd cvs
|
|
|
|
|
<span class="prompt">bireme ~/cvs $</span> cvs init
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Maintenant, vous avez un r<>pertoire de d<>p<EFBFBD>t pr<70>t <20> recevoir et <20>
|
|
|
|
|
stocker les diff<66>rents projets. Il ne reste plus qu'<27> le remplir !
|
|
|
|
|
</p>
|
|
|
|
|
|
2005-09-16 10:42:45 +02:00
|
|
|
|
<p>
|
|
|
|
|
Plusieurs fois, <strong>cvs ouvrira un <20>diteur de texte</strong> en vous
|
|
|
|
|
demandant de commenter ce que vous <20>tes en train de
|
|
|
|
|
faire. <strong>Commentez vos modifications d'une avec un peu de
|
|
|
|
|
pr<EFBFBD>cision</strong> : <20>vitez par exemple d'<27>crire simplement
|
|
|
|
|
<EFBFBD> modifications diverses <3B>, mais plut<75>t <20> orthographe,
|
|
|
|
|
typographie, paragraphe sur X ou Y, fontion Z ou T,
|
|
|
|
|
etc. <3B> L'objectif est qu'un autre contributeur (ou vous-m<>me <20> une
|
|
|
|
|
date ult<6C>rieure) puisse ne lire <em>que</em> ce commentaire et savoir la
|
|
|
|
|
nature de vos modifications.
|
|
|
|
|
</p>
|
|
|
|
|
|
2005-09-16 00:48:08 +02:00
|
|
|
|
|
|
|
|
|
<h3>Cr<43>er un projet</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Supposons que vous soyez en train de concevoir un projet nomm<6D>
|
|
|
|
|
<EFBFBD> turing-test <3B>, dont tous les fichiers sont r<>unis dans le
|
|
|
|
|
r<EFBFBD>pertoire <code>$HOME/programmation/turing-test</code>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Tapez :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~ $</span> cd programmation/turing-test
|
|
|
|
|
<span class="prompt">bireme ~/programmation/turing-test $</span> cvs import turing votre_nom version0
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Ainsi est cr<63><72> un r<>pertoire <code>$HOME/cvs/turing</code>
|
|
|
|
|
contenant des fichiers correspondant <20> ceux du r<>pertoire
|
|
|
|
|
<code>$HOME/programmation/turing-test</code>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
La mention <code>votre_nom</code> vous d<>signe ; vous pouvez mettre
|
|
|
|
|
votre login, ou autre chose si vous pr<70>f<EFBFBD>rez.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Quant <20> la mention <code>version0</code>, il s'agit juste d'un nom pour
|
|
|
|
|
la version initiale : vous pouvez tout aussi bien mettre
|
|
|
|
|
<code>start</code>, <code>debut</code>, etc. Seule contrainte : le
|
|
|
|
|
premier caract<63>re doit <20>tre une lettre.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h3>Cr<43>er un r<>pertoire de travail</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Maintenant que vous avez cr<63><72> votre projet sous CVS, vous pouvez vous
|
|
|
|
|
cr<EFBFBD>er un r<>pertoire de travail.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~ $</span> mkdir rep-travail
|
|
|
|
|
<span class="prompt">bireme ~ $</span> cd rep-travail
|
|
|
|
|
<span class="prompt">bireme ~/rep-travail $</span> cvs checkout turing
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
La commande <code>cvs checkout <em>projet</em></code> cr<63>e un
|
|
|
|
|
r<EFBFBD>pertoire de travail pour le projet indiqu<71>. <strong>Vous pouvez en
|
|
|
|
|
cr<EFBFBD>er autant que vous voulez</strong> (si vous en avez vraiment
|
|
|
|
|
l'utilit<69>...). En particulier, plusieurs utilisateurs diff<66>rents peuvent
|
|
|
|
|
en cr<63>er : c'est pr<70>cis<69>ment ce qui fait l'int<6E>r<EFBFBD>t de CVS.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h2>CVS au quotidien</h2>
|
|
|
|
|
|
|
|
|
|
<h3>Mettre <20> jour son r<>pertoire de travail</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Avant de modifier les fichiers mis sous CVS, vous devrez <20> chaque fois
|
|
|
|
|
les mettre <20> jour, ce qui vous permet de partir de versions r<>centes de
|
|
|
|
|
ces fichiers. Pour mettre <20> jour votre r<>pertoire de travail,
|
|
|
|
|
tapez :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs update turing
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
|
|
|
|
Vous serez alors s<>r d'avoir des fichiers <20> jour.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Vous pouvez aussi ne mettre <20> jour qu'un fichier, ou une liste de
|
|
|
|
|
fichiers :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs update <em>fichier1 fichier2 etc</em>
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Vous pouvez encore indiquer en ligne de commande quel r<>pertoire mettre
|
|
|
|
|
<EFBFBD> jour :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs update -d ~/programmation/turing-test
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Cette derni<6E>re commande peut <20>tre int<6E>gr<67>e <20> un script, ce qui est tr<74>s
|
|
|
|
|
pratique si vous voulez que les modifications soient prises en compte <20>
|
|
|
|
|
plusieurs endroits diff<66>rents (par exemple, dans votre r<>pertoire de
|
|
|
|
|
travail et sur votre page web, si vous avez mis votre page web
|
|
|
|
|
sous CVS).
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h3>Ajouter des fichiers</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Un projet est rarement fix<69> d<>s sa premi<6D>re version ; aussi des
|
|
|
|
|
fichiers peuvent-ils s'ajouter aux fichiers int<6E>gr<67>s <20> l'origine (avec
|
|
|
|
|
la commande <code>cvs import</code>), d'autres en <20>tre retir<69>s.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Pour ajouter des fichiers, la fa<66>on de s'y prendre d<>pend de la nature
|
|
|
|
|
du fichier en question. En effet, si le fichier est un fichier binaire,
|
|
|
|
|
il ne sert <20> rien que CVS le lise ligne <20> ligne <20> chaque partage de
|
|
|
|
|
modifications pour v<>rifier s'il a chang<6E> ; tandis que s'il s'agit
|
|
|
|
|
d'un fichier texte, CVS est l<> pour <20>a.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Par cons<6E>quent, si c'est un <strong>fichier texte</strong> (un texte
|
|
|
|
|
simple, un script, le code source d'un programme, un fichier TeX, etc.),
|
|
|
|
|
tapez :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs add <em>fichier1 fichier2 etc</em>
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
|
|
|
|
En revanche, si vous voulez <strong>ajouter un fichier binaire</strong>
|
|
|
|
|
(un fichier ex<65>cutable, un document PS, PDF, une image JPEG, PNG, etc.),
|
|
|
|
|
tapez :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs add -kb <em>fichier1 fichier2 etc</em>
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Vous pouvez <strong>v<>rifier le statut</strong> des fichiers (binaires
|
|
|
|
|
ou non) avec la commande :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs status <em>fichier</em>
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
|
|
|
|
Lisez le champ <20> Sticky Options <3B>. Si sa valeur est
|
|
|
|
|
<EFBFBD> (none) <3B>, c'est que votre fichier n'est pas d<>clar<61> comme
|
|
|
|
|
binaire ; s'il vaut <20> -kb <3B>, c'est qu'il l'est.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Il arrive parfois que l'on oublie de d<>clarer comme binaires certains
|
|
|
|
|
fichiers, notamment lors de l'enregistrement du projet dans le
|
|
|
|
|
r<EFBFBD>pertoire de d<>p<EFBFBD>t CVS. Il n'est pas trop tard pour se
|
|
|
|
|
rattraper :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs update -kb <em>fichier1 fichier2 etc</em>
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
|
|
|
|
Ce qui <20>quivaut <20> la succession de commandes suivante :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs admin -kb <em>fichier1 fichier2 etc</em><br/>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs update <em>fichier1 fichier2 etc</em>
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h3>Retirer des fichiers</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Pour retirer des fichiers, utilisez la commande :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs remove <em>fichier1 fichier2 etc</em>
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h3>Partager les modifications</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Quand vous avez termin<69> vos modifications et que vous estimez que le
|
|
|
|
|
monde est pr<70>t <20> les recevoir, partagez-les :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs commit
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
|
|
|
|
Les modifications seront alors enregistr<74>es dans le r<>pertoire de d<>p<EFBFBD>t.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Vous pouvez aussi ne partager qu'un fichier, ou une liste de
|
|
|
|
|
fichiers :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs commit <em>fichier1 fichier2 etc</em>
|
|
|
|
|
</pre>
|
|
|
|
|
|
2005-09-16 10:42:45 +02:00
|
|
|
|
<p>
|
|
|
|
|
Quand vous partagez vos modifications, un <20>diteur de texte s'ouvre et
|
|
|
|
|
vous demande de les commenter. Vous n'<27>tes pas oblig<69> d'<27>tre bavard,
|
|
|
|
|
mais soyez relativement pr<70>cis.
|
|
|
|
|
</p>
|
|
|
|
|
|
2005-09-16 00:48:08 +02:00
|
|
|
|
|
|
|
|
|
<h3>Nettoyer son r<>pertoire de travail</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Si vous ne contribuez qu'occasionnellement <20> tel ou tel projet, vous
|
|
|
|
|
pouvez vouloir ne pas conserver en permanence une version d'un projet
|
|
|
|
|
donn<EFBFBD> dans votre r<>pertoire de travail. Pour vous en d<>barrasser, vous
|
|
|
|
|
avez bien s<>r la possibilit<69> d'effacer les fichiers d'une mani<6E>re
|
|
|
|
|
<EFBFBD> traditionnelle <3B>, au moyen de la commande
|
|
|
|
|
<code>rm</code>. Mais CVS propose un outil plus puissant :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs release -d turing
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
2005-09-16 10:06:05 +02:00
|
|
|
|
Cette commande <strong>v<>rifie que vous avez bien partag<61> toutes vos
|
2005-09-16 00:48:08 +02:00
|
|
|
|
modifications avant d'effacer les fichiers de votre r<>pertoire de
|
2005-09-16 10:06:05 +02:00
|
|
|
|
travail</strong>. Ceci vous <20>pargne bien des migraines !
|
2005-09-16 00:48:08 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2005-09-16 10:06:05 +02:00
|
|
|
|
Si vous ne voulez pas effacer vos fichiers, mais simplement
|
|
|
|
|
<strong>v<>rifier qu'aucun fichier n'a <20>t<EFBFBD> modifi<66> sans <20>tre
|
|
|
|
|
partag<EFBFBD></strong>, tapez simplement :
|
2005-09-16 00:48:08 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs release turing
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
|
|
|
|
Cette commande annule le <code>cvs checkout</code>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h2>Fonctionnalit<69>s avanc<6E>es de CVS</h2>
|
|
|
|
|
|
|
|
|
|
<h3>Historique des modifications</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
CVS garde l'historique de toutes les modifications. Si vous voulez voir
|
|
|
|
|
l'historique complet, tapez :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs log
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Vous pouvez aussi ne consulter l'historique que d'un fichier, ou d'une
|
|
|
|
|
liste de fichiers :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs log <em>fichier1 fichier2 etc</em>
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Devant vos yeux <20>bahis s'affichera alors la liste de toutes les versions
|
|
|
|
|
de ces fichiers, accompagn<67>es des commentaires d<>pos<6F>s par les
|
|
|
|
|
contributeurs.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h3>Comparer des versions</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Vous voulez savoir pr<70>cis<69>ment en quoi telle version d'un fichier
|
|
|
|
|
diff<EFBFBD>re de telle autre ; pour cela, tapez :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs diff -r 1.2 fichier
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Ainsi, vous pourrez comparer l'<27>tat actuel du fichier avec sa
|
|
|
|
|
version 1.2. Mais vous pouvez aussi comparer deux versions
|
|
|
|
|
quelconques :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs diff -r 1.1 -r 1.2 fichier
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<h3>Revenir sur des modifications</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Oups ! Vous avez fait une erreur, et dans votre pr<70>cipitation, vous
|
|
|
|
|
l'avez d<>j<EFBFBD> partag<61>e. Heureusement, CVS permet de revenir <20> des versions
|
|
|
|
|
ant<EFBFBD>rieures. Tapez :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs update -A fichier
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> rm fichier
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs update -p -r1.1 fichier > fichier
|
|
|
|
|
<span class="prompt">bireme ~/turing-test $</span> cvs commit fichier
|
|
|
|
|
</pre>
|
|
|
|
|
|
2005-09-16 10:42:45 +02:00
|
|
|
|
<h3>Astuce : utiliser l'outil <code>make</code></h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Imaginons la situation suivante : vous avez un site web sur lequel
|
|
|
|
|
vous voulez travailler <20> l'aide de CVS. Vous avez donc un r<>pertoire de
|
|
|
|
|
d<EFBFBD>p<EFBFBD>t (par exemple <code>~/cvs/www</code>) et un r<>pertoire de travail
|
|
|
|
|
(par exemple <code>~/cvs-travail/www</code>). Mais vous voulez aussi
|
|
|
|
|
mettre <20> jour le site en lui-m<>me lorsque vous partagez des
|
|
|
|
|
modifications, et ce site est dans le r<>pertoire <code>~/www</code>. Ce
|
|
|
|
|
r<EFBFBD>pertoire ne peut pas <20>tre le m<>me que pour le d<>p<EFBFBD>t, car celui-ci
|
|
|
|
|
doit lui <20>tre exclusivement consacr<63> ; et il ne peut pas non plus
|
|
|
|
|
<EFBFBD>tre votre r<>pertoire de travail, car la moindre modification (et
|
|
|
|
|
surtout la moindre erreur) serait imm<6D>diatement publi<6C>e...
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Vous devrez donc taper, <20> chaque fois que vous voudrez partager vos
|
|
|
|
|
modifications, les lignes suivantes :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/cvs-travail/www $</span> cvs commit
|
|
|
|
|
<span class="prompt">bireme ~/cvs-travail/www $</span> cvs update -d ~/www
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
|
|
|
|
Le probl<62>me, c'est que cette s<>quence de commandes sera toujours la m<>me
|
|
|
|
|
et que vous risquerez toujours d'en oublier une sur les deux... Aussi
|
|
|
|
|
avez-vous la possibilit<69> d'utiliser l'utilitaire <code>make</code>,
|
|
|
|
|
outil tr<74>s puissant, notamment dans ces circonstances (il est tr<74>s
|
|
|
|
|
utilis<EFBFBD> par les programmeurs).
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Commencez donc par <strong><3E>diter un fichier Makefile</strong> dans le r<>pertoire souche
|
|
|
|
|
de votre projet dans le r<>pertoire de travail ; dans notre exemple,
|
|
|
|
|
il s'agit de ~/cvs-travail/www. Dans ce fichier, <20>crivez :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
install:
|
|
|
|
|
cvs commit
|
|
|
|
|
cvs update -d /users/<em>ma_promo</em>/<em>ma_section</em>/<em>mon_login</em>/www
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Ensuite, ajoutez ce fichier Makefile au CVS :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/cvs-travail/www $</span> cvs add Makefile
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Et <20> partir de maintenant, au lieu de taper <code>cvs commit</code>
|
|
|
|
|
pour partager vos modifications, vous taperez simplement :
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<pre>
|
|
|
|
|
<span class="prompt">bireme ~/cvs-travail/www $</span> make install
|
|
|
|
|
</pre>
|
|
|
|
|
|
|
|
|
|
<p class="continue">
|
|
|
|
|
et <code>make</code> se chargera de tout <20> votre place !
|
|
|
|
|
</p>
|
2005-09-16 00:48:08 +02:00
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Vous <20>tes maintenant pr<70>t <20> utiliser CVS. Sa puissance est telle que cet
|
|
|
|
|
outil est devenu l'un des standards incontournables. Profitez-en
|
|
|
|
|
bien !
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h2>Bibliographie</h2>
|
|
|
|
|
|
2002-12-20 18:38:42 +01:00
|
|
|
|
<p>
|
|
|
|
|
Vous pouvez acc<63>der <20> la petite documentation r<>dig<69>e par David Monniaux
|
|
|
|
|
<a href="doc-cvs.ps.gz">(au format <code>.ps.gz</code>)</a>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
La documentation officielle se trouve <a
|
|
|
|
|
href="http://www.cvshome.org/docs/manual/">l<>-bas</a>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="metainformation">
|
2005-09-16 00:48:08 +02:00
|
|
|
|
Auteurs<72>: Baptiste M<>l<EFBFBD>s, Jo<4A>l Riou. Derni<6E>re modification le
|
2005-11-04 16:01:06 +01:00
|
|
|
|
<date value="$Date: 2005-11-04 15:01:06 $" />.
|
2002-12-20 18:38:42 +01:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|
|
|
|
|
|