<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
  <!ENTITY kappname "&cervisia;">
  <!ENTITY package "kdesdk">
  <!ENTITY ssh "<command
>ssh</command
>">
  <!ENTITY rsh "<command
>rsh</command
>">
  <!ENTITY % addindex "IGNORE">
  <!ENTITY % French "INCLUDE"
> <!-- Change language only here -->
  <!ENTITY CVS "<application
>CVS</application
>">
]>

<book lang="&language;">

<bookinfo>
<title
>Manuel de &cervisia;</title>
<authorgroup>
<author
><firstname
>Bernd</firstname
><surname
>Gehrmann</surname
> <affiliation
><address
><email
>bernd@mail.berlios.de</email
></address
></affiliation>
</author
> 

&traducteurJoelleCornavin; 

</authorgroup>

<copyright>
<year
>1999</year>
<year
>2000</year>
<year
>2001</year>
<year
>2002</year>
<holder
>Bernd Gehrmann</holder>
</copyright>
<legalnotice>
 
<para
>Ce programme peut être distribué selon les termes de la <foreignphrase
>Q Public License</foreignphrase
> telle qu'elle est définie par Trolltech AS (Norvège) et figure dans le fichier <foreignphrase
>LICENSE QPL</foreignphrase
> inclus dans le conditionnement de ce fichier.</para>

<para
>Ce programme est distribué dans l'espoir qu'il vous sera utile, mais SANS AUCUNE GARANTIE, sans même la garantie implicite d'une POSSIBILITÉ DE COMMERCIALISATION ou d'APTITUDE À UN OBJECTIF PARTICULIER.</para>
</legalnotice>

<legalnotice
>&FDLNotice;</legalnotice>

<date
>2002-06-30</date>
<releaseinfo
>2.00.00</releaseinfo>

<abstract>
<para
>&cervisia; fournit un affichage graphique de &CVS;.</para>
</abstract>

<keywordset>
<keyword
>KDE</keyword>
<keyword
>kdesdk</keyword>
<keyword
>Cervisia</keyword>
<keyword
>CVS</keyword>
<keyword
>contrôle de version</keyword>
<keyword
>contrôle de révision</keyword>
</keywordset>

</bookinfo>
   
<chapter id="getting-started">
<title
>Premiers pas</title>

<sect1 id="accessing-repository">
<title
>Accès au référentiel</title>
      
<para
>Dans cette section, nous partons du principe que vous utilisez &CVS; côté client uniquement. Cela signifie que quelqu'un (probablement l'administrateur du référentiel &CVS;) vous a fourni un compte sur le serveur et qu'il vous appartient d'extraire les modules depuis le référentiel pour pouvoir travailler avec ceux-ci. </para>

<para
>&CVS; gère plusieurs méthodes d'accès au référentiel, qu'on peut classer de la manière suivante : </para>

<variablelist>
<varlistentry>
<term
>Local</term>
<listitem>
<para
>Le référentiel se présente sous la forme <filename class="directory"
>/home/cvs</filename
> et il est simplement stocké dans un dossier accessible à partir de votre ordinateur. Il peut se trouver physiquement sur un disque monté via <acronym
>NFS</acronym
>, mais c'est un détail en dehors de notre propos. Si vous utilisez fréquemment un référentiel local en particulier, veillez à en informer &cervisia;. </para>

<procedure>
<title
>Ajout d'un référentiel local</title>
<step
><para
>Ouvrez la boîte de dialogue Référentiels en choisissant <menuchoice
><guimenu
>Référentiel</guimenu
> <guimenuitem
>Référentiels...</guimenuitem
></menuchoice
>.</para
></step>

<step
><para
>Appuyez sur le bouton <guibutton
>Ajouter...</guibutton
>.</para
></step>

<step
><para
>Saisissez les détails sur le référentiel dans la boîte de dialogue qui s'affiche.</para
></step>

<step
><para
>Confirmez par un clic sur le bouton <guibutton
>OK</guibutton
>.</para
></step>

</procedure>

<para
>À l'avenir, chaque fois que vous utiliserez &cervisia; pour extraire un nouveau module, &cervisia; affichera les référentiels que vous avez ajoutés ici.</para>

</listitem>
</varlistentry>

<varlistentry>
<term
>rsh</term>
<listitem>
<para
>Le nom du référentiel se présente sous la forme <literal
>:ext:bernd@cvs.cervisia.sourceforge.net:/cvsroot/cervisia</literal
>.</para>

<para
>Cette méthode exige que vous disposiez d'un compte sur le serveur (dans ce cas, <systemitem class="systemname"
>cvs.sourceforge.net</systemitem
>) et que vous communiquiez à l'aide d'un interpréteur de commandes distant. Pour ce faire, &CVS; utilise &rsh; par défaut. Toutefois, en raison de son manque de sécurité notoire, &rsh; s'est vu remplacer au profit de &ssh;. </para>

<para
>Si vous devez employer &ssh;, veillez à positionner la variable d'environnement $<envar
>CVS_RSH</envar
> sur &ssh; lors de l'utilisation du client <command
>cvs</command
>. &cervisia; le gère aisément. </para>

<para
>Ouvrez à nouveau la boîte de dialogue Référentiels et cliquez sur le bouton <guibutton
>Ajouter...</guibutton
>. Saisissez à présent le nom du référentiel sur la première ligne, et l'interpréteur de commande distant (&pex;, &ssh;) sur la seconde ligne. Si vous confirmez maintenant par un clic sur le bouton <guibutton
>OK</guibutton
> &cervisia;, mémorise ces paramètres. </para>

<para
>Notez que &cervisia; ne peut pas répondre aux requêtes de mots de passe possibles à partir du serveur. Assurez-vous qu'un nom de connexion (login) distant soit opérationnel sans exiger la saisie du mot de passe. Pour ce faire, la version standard de &rsh; crée par exemple un fichier <filename
>$<envar
>HOME</envar
>/.rhosts</filename
> comportant une liste d'hôtes de confiance (consultez la page de man &rsh;). </para>

<para
>Par ailleurs, &ssh; copie votre clef publique <filename
>$<envar
>HOME</envar
>/.ssh/identity.pub</filename
> sur le serveur. Dans ce cas, la clef ne doit pas être cryptée à l'aide d'un mot de passe supplémentaire (passphrase) (consultez la page de man de &ssh; et la <acronym
>FAQ</acronym
> <acronym
>SSH</acronym
> de &CVS; sur le site de SourceForge). Si vous avez un doute sur ces aspects, interrogez votre administrateur système. </para>

</listitem>
</varlistentry>

<varlistentry>
<term
>pserver</term>
<listitem>

<para
>Le nom du référentiel se présente sous la forme <filename
>:pserver:gehrmab@cvs.kde.org:/home/kde</filename
> </para>

<para
>Cette méthode accède au serveur via un protocole spécial qui souffre d'une authentification relativement faible (<literal
>pserver</literal
> signifie <quote
>authentification par mot de passe</quote
>). Avant de pouvoir utiliser un tel serveur, vous devez vous connecter. Puisque &cervisia; ne gère pas directement cette opération, saisissez sur la ligne de commande </para>

<screen
><prompt
>%</prompt
><userinput
><command
>cvs</command
> <option
>-d</option
> <parameter
>:pserver:joe@cvs.kde.org:/home/kde login</parameter
></userinput
></screen>

<para
>(naturellement, après y avoir substitué votre référentiel). &CVS; vous invite alors à saisir votre mot de passe et vérifie avec le serveur. Si le mot de passe correspond, le nom du référentiel, ainsi que le mot de passe (devenu quelque peu indéchiffrable), sera ajouté à la fin du fichier <filename
>$<envar
>HOME</envar
>/.cvspass</filename
>. Chaque fois que &CVS; accède au référentiel, il envoie silencieusement le mot de passe au serveur, de sorte que vous n'avez pas à vous en préoccuper une fois connecté. Du fait que quiconque connaissant votre mot de passe peut travailler avec le référentiel en votre nom (et même lui causer de graves dommages), vous avez tout intérêt à garder le <filename
>$<envar
>HOME</envar
>/.cvspass</filename
> secret et non lisible par d'autres personnes. </para>

</listitem>
</varlistentry>
</variablelist>

</sect1>


<sect1 id="importing">
<title
>Importation d'un module dans le référentiel</title>

<para
>Dans cette section, nous abordons la manière d'intégrer un nouveau projet au référentiel &CVS;. Si vous souhaitez simplement travailler sur un projet existant déjà présent dans le référentiel, vous pouvez ignorer cette section. </para>

<figure id="screenshot-import" float="1">
<title
>Une copie d'écran de la boîte de dialogue d'importation de &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="import.png"/></imageobject>
<textobject
><phrase
>Une copie d'écran de la boîte de dialogue d'importation de &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>La <xref linkend="screenshot-import"/> affiche la boîte de dialogue permettant d'<emphasis
>importer</emphasis
> un projet sous la forme d'un module. Après avoir rempli ce formulaire et confirmé par <guibutton
>OK</guibutton
>, utilisez la commande &CVS; suivante : </para>

<screen
><command
>cvs</command
> -d <co id="co-repository"
></co
><replaceable
>référentiel</replaceable
> import -m "" <co id="co-module"
></co
><replaceable
>module</replaceable
> <co id="co-vendortag"
></co
><replaceable
>marqueurdecréation</replaceable
> <co id="co-releasetag"
></co
><replaceable
>marqueurdediffusion</replaceable
></screen>

<calloutlist>

<callout arearefs="co-repository">
<para
>Le nom du référentiel &CVS;, également appelé $<envar
>CVSROOT</envar
>. Vous devez disposer d'un accès en écriture au référentiel, lequel doit être correctement initialisé. Si celui-ci n'existe pas encore, initialisez-le à l'aide de la commande <userinput
><command
>cvs</command
> <option
>-d</option
> <replaceable
>référentiel</replaceable
> <command
>init</command
></userinput
>. </para>

<para
>S'il s'agit d'un référentiel distant, assurez-vous que l'authentification fonctionne (voir <xref linkend="accessing-repository"/>). </para>
</callout>

<callout arearefs="co-module">
<para
>Le nom du module sous lequel le projet sera enregistré. Une fois importé, le projet peut être extrait sous ce nom. Consultez <xref linkend="checkingout"/> pour plus d'informations. Il s'agit également du nom du dossier correspondant dans le référentiel. </para>
</callout>

<callout arearefs="co-vendortag">
<para
>Le marqueur de création sert généralement au suivi de sources tierces. Choisissez simplement votre nom d'utilisateur si vous n'avez pas de meilleure idée. Le contenu de la saisie n'a ici aucune importance. </para>
</callout>

<callout arearefs="co-releasetag">
<para
>On emploie également souvent ce marqueur pour importer différentes versions de logiciels tiers complémentaires. Si vous n'en importez pas, utilisez le mot <literal
>start</literal
> ou une chaîne <literal
>FOO_1_0</literal
> où <literal
>FOO</literal
> est le nom de votre projet et <literal
>1.0</literal
> correspond au numéro de version de la version importée. </para>
</callout>

</calloutlist>

<formalpara>
<title
>Dossier de travail</title>
<para
>C'est le dossier de plus haut niveau du projet que vous désirez importer. L'importation commence à partir de ce dossier et continue récursivement. </para>
</formalpara>

<formalpara>
<title
>Omission de fichiers</title>
<para
>Si vous remplissez ce champ, une option <option
>-I <replaceable
>noms_de_fichiers</replaceable
></option
> supplémentaire est fournie à la commande <command
>cvs import</command
>. Cet élément est interprété comme une liste de modèles de noms séparés par une espace, qui seront ignorés. En règle générale, un moyen de contrôle plus précis et plus fiable des fichiers à intégrer au référentiel consiste à créer un dossier contenant uniquement les fichers que vous voulez importer et à démarrer à partir de celui-ci. Néanmoins, cet élément peut s'avérer utile si le projet contient des fichiers que &CVS; ignore par défaut, par exemple les fichiers appelés <filename
>core</filename
>. Dans ce cas, saisissez simplement le caractère <literal
>!</literal
> dans ce champ, de façon à annuler le modèle de &CVS; des fichiers ignorés. Consultez <xref linkend="ignoredfiles"/>. </para>
</formalpara>

<formalpara>
<title
>Importation sous forme de binaires</title>
<para
>Si vous cochez cette case, tous les fichiers sont importés en mode binaire. Cela signifie qu'un argument <option
>kb</option
> est spécifié à <command
>cvs</command
>. </para>
</formalpara>

</sect1>


<sect1 id="checkingout">
<title
>Extraction d'un module du référentiel</title>
<para
>Avant de travailler sur un projet soumis au contrôle de révision, vous devez extraire une <emphasis
>copie de travail</emphasis
>. </para>

<figure id="screenshot-checkout" float="1">
<title
>Une copie d'écran de la boîte de dialogue d'extraction de &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="checkout.png"/></imageobject>
<textobject
><phrase
>Une copie d'écran de la boîte de dialogue d'extraction de &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<formalpara>
<title
>Référentiel</title>
<para
>Le nom du référentiel &CVS;, également appelé <filename
><envar
>$CVSROOT</envar
></filename
>. Si le référentiel est distant, assurez-vous que l'authentification fonctionne. Consultez <xref linkend="accessing-repository"/>. </para>
</formalpara>

<formalpara>
<title
>Module</title>
<para
>Le nom du module à extraire. Si vous travaillez avec un référentiel existant, vous avez probablement obtenu ce nom de l'administrateur. En revanche, si le référentiel comporte un fichier <filename
><envar
>$CVSROOT</envar
>/modules</filename
>, vous pouvez récupérer une liste des modules disponibles en cliquant sur le bouton <guibutton
>Récupérer la liste</guibutton
>. </para>
</formalpara>

<formalpara>
<title
>Dossier de travail</title>
<para
>Le dossier dans lequel le module doit être extrait. Notez que le dossier de plus haut niveau de la copie de travail est toujours créé sous le même nom que celui du module placé dans le dossier indiqué ici. </para>
</formalpara>

</sect1>


<sect1 id="mainscreen">
<title
>L'écran principal</title>
<para
>Lorsque vous démarrez &cervisia; et que vous ouvrez une copie de travail en choisissant <menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Ouvrir...</guimenuitem
></menuchoice
>, vous obtenez un affichage hiérarchique du dossier actuel. En fonction des paramètres de vos fichiers <filename
>.cvsignore</filename
>, les fichiers que vous ne souhaitez d'ordinaire pas intégrer au référentiel - comme les fichiers d'objet - ne sont pas présentés. En revanche, vous disposez pour chaque fichier, d'un affichage de son état correspondant. Dans le paramètre par défaut, il s'agit de <quote
>Inconnu</quote
> car &cervisia; retarde la récupération des informations jusqu'à ce que vous choisissiez <guimenuitem
>Mettre à jour</guimenuitem
> ou <guimenuitem
>État</guimenuitem
> dans le menu <guimenu
>Fichier</guimenu
>. Cette approche fournit un ensemble minimal de fonctionnalités accessibles même si vous ne disposez pas d'une connexion permanente au serveur &CVS;. </para>

<figure id="screenshot-mainview" float="1">
<title
>Une copie d'écran de la fenêtre principale de &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="mainview.png"/></imageobject>
<textobject
><phrase
>Une copie d'écran de la fenêtre principale de &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>Les commandes du menu Fichier agissent d'ordinaire uniquement sur les fichiers que vous avez mis en surbrillance. Vous pouvez également mettre des dossiers en surbrillance. À présent, choisissez <guimenuitem
>Mettre à jour</guimenuitem
> dans le menu <guimenu
>Fichier</guimenu
>. &cervisia; émet une commande</para>

<para>
<screen
><command
>cvs update -n <replaceable
>noms_de_fichiers</replaceable
></command
></screen>
</para>

<para
>pour obtenir les informations d'état des fichiers en surbrillance. Notez que &cervisia; n'examine récursivement les sous-dossiers que si vous avez défini l'option correspondante dans le menu <guimenu
>Paramètres</guimenu
>. Selon les états particuliers du fichier, un élément apparaît à présent dans la colonne <guilabel
>État</guilabel
> : </para>

<itemizedlist>

<listitem
><para
>Modifié localement - Cela signifie que vous avez modifié le fichier en le comparant à la version présente dans le référentiel. </para
></listitem>

<listitem
><para
>Ajouté localement - Cela signifie que le fichier n'existe pas dans le référentiel, mais dans votre dossier de travail et que vous avez programmé son ajout. L'insertion proprement dite dans le référentiel n'a lieu qu'après validation (<quote
>commit</quote
>). </para
></listitem>

<listitem
><para
>Supprimé localement - Cela signifie que vous avez programmé la suppression du fichier, mais qu'il existe toujours dans le référentiel. La suppression proprement dite n'a lieu qu'après validation. </para
></listitem>

<listitem
><para
>Nécessite une mise à jour - Ce message s'affiche s'il existe une version plus récente du fichier dans le référentiel, par exemple, parce qu'un utilisateur a validé une modification. Veillez en règle générale à actualiser ce fichier pour disposer d'une version à jour dans votre dossier. </para
></listitem>

<listitem
><para
>Nécessite un correctif - Pour l'essentiel, ce message est identique au précédent. Seule différence, vous êtes averti qu'en cas de mise à jour, le serveur &CVS; ne vous transfère qu'un correctif au lieu du fichier entier. </para
></listitem>

<listitem
><para
>Nécessite une fusion - Indique la nécessité d'une fusion de la révision de ce fichier dans votre dossier de travail et de sa version dans le référentiel. Ceci se produit généralement si vous avez apporté des modifications à ce fichier alors qu'un autre utilisateur a validé les siennes. Si vous choisissez la mise à jour, les modifications effectuées dans le référentiel sont fusionnées dans votre fichier. En cas de conflit (c'est-à-dire, si quelqu'un d'autre a changé les même lignes que vous), le nouvel état est alors <quote
>Conflit</quote
>. </para
></listitem>
       
<listitem
><para
>À jour - Indique que le fichier est identique à la version présente dans le référentiel. </para
></listitem>

<listitem
><para
>Conflit - Ce message s'affiche si ce fichier contient encore des indicateurs de conflit. Peut-être n'avez-vous pas actualisé le fichier précédemment ni résolu les conflits. </para
></listitem>

<listitem
><para
>Pas dans CVS - Indique que ce fichier n'est pas enregistré dans le référentiel &CVS;. Si vous souhaitez le rendre accessible à d'autres utilisateurs, vous devez l'ajouter au référentiel. Dans le cas contraire, vous pouvez envisager de l'ajouter à votre fichier <filename
>.cvsignore</filename
>. </para
></listitem>

</itemizedlist>
      
<para
>Après cette vue d'ensemble de l'état actuel du CVS, pensez à exécuter une mise à jour. Mettez quelques fichiers en surbrillance (ou la racine de l'arborescence du dossier équivalant à la mise en surbrillance de tous les fichiers de ce dossier). Choisissez à présent <guimenuitem
>Mettre à jour</guimenuitem
> dans le menu <guimenu
>Fichier</guimenu
> (vous pourrez naturellement l'avoir choisi au début de la session). Pour certains fichiers, l'état peut à présent changer. En principe, les fichiers comportant <quote
>Nécessite un correctif</quote
> ou <quote
>Nécessite une mise à jour</quote
> sont mis à jour. Voici par conséquent les nouveaux éléments possibles dans la colonne d'état : </para>
      
<itemizedlist>

<listitem
><para
>Mis à jour - Affiché si le fichier était mis à jour à partir du référentiel. </para
></listitem>

<listitem
><para
>Corrigé - Indique que le serveur &CVS; a émis un correctif pour ce fichier et qu'il a été appliqué avec succès. Si le correctif n'est pas satisfaisant en raison d'un conflit entre vos modifications et celles validées par quelqu'un d'autre dans le référentiel, vous obtenez maintenant l'état <quote
>Conflit</quote
>. </para
></listitem>

</itemizedlist>
      
<para
>Peut-être avez-vous remarqué que la ligne du fichier présente une couleur diifférente en fonction de son état. Les couleurs sont choisies pour refléter en quelque sorte la priorité de l'état. Par exemple, un fichier conflictuel est signalé en rouge pour indiquer qu'il faut résoudre un conflit avant de pouvoir continuer à travailler avec. Si votre dossier contient un grand nombre de fichiers, vous risquez néanmoins de perdre la vue d'ensemble. Pour obtenir des informations plus concises sur les fichiers comportant un état inhabituel, cliquez simplement sur l'en-tête de la colonne <guilabel
>État</guilabel
>. La liste des fichiers étant alors triée par priorité, vous obtenez toutes les informations importantes en haut de la liste. Pour revenir à l'affichage trié par ordre alphabétique, cliquez sur l'en-tête de la colonne <guilabel
>Nom du fichier</guilabel
>. </para>

</sect1>
</chapter>

   
<chapter id="workingwithfiles">
<title
>Manipulation des fichiers</title>

<para
>Toutes les fonctions courantes de &CVS; sont utilisées directement dans la fenêtre principale de &cervisia;. Les commandes agissent d'ordinaire sur plusieurs fichiers à la fois, notamment tous ceux qui sont actuellement sélectionnés. Son interprétation dépend des paramètres fixés dans le menu <guimenu
>Paramètres</guimenu
>. Par exemple, si <menuchoice
><guimenu
>Paramètres</guimenu
> <guimenuitem
>Valider et supprimer récursivement</guimenuitem
></menuchoice
> est coché et si vous choisissez <menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Valider...</guimenuitem
></menuchoice
> bien qu'un dossier soit sélectionné, tous les fichiers de l'arborescence placés dans ce dossier sont alors validés. Dans le cas contraire, seuls les fichiers réguliers du dossier proprement dit sont affectés. </para>

<para
>Pour éditer un fichier, double-cliquez simplement sur celui-ci ou appuyez sur <keycap
>Entrée</keycap
>. L'éditeur configuré dans <menuchoice
><guimenu
>Paramètres</guimenu
> <guimenuitem
>Configurer Cervisia...</guimenuitem
></menuchoice
> démarre, le nom du fichier servant d'argument. </para>

<sect1 id="addingfiles">
<title
>Ajout de fichiers</title>

<para
>L'ajout de fichier à un projet exige deux étapes : en premier lieu, les fichiers doivent être enregistrés dans &CVS;. Pour ce faire, mettez en surbrillance tous les fichiers à ajouter dans la fenêtre principale de &cervisia;. Choisissez ensuite <menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Ajouter au référentiel</guimenuitem
></menuchoice
>. &cervisia; émet une commande</para>

<para>
<screen
><command
>cvs add <replaceable
>noms_de_fichiers</replaceable
></command
></screen>
</para>

<para
>Si l'opération a réussi, la colonne d'état devrait afficher <quote
>Ajouté au référentiel</quote
> à propos des fichiers ajoutés. </para>

<para
>Pour placer les fichiers de façon réelle dans le référentiel, il faut les valider. Cette procédure a un avantage appréciable : vous pouvez valider les fichiers, ainsi que les modifications apportées à d'autres parties du projet. Ce faisant, on peut aisément voir (par exemple, dans les messages électroniques de validation) que tous ces changements font partie d'un tout. </para>

<para
>&CVS; n'est pas conçu pour mettre en place un contrôle de révision satisfaisant des fichiers binaires. À titre d'exemple, la fusion de fichiers binaires ne présente aucun intérêt. De plus, &CVS; développe par défaut les mots-clés (&pex; sur la chaîne <literal
>&dollar;Revision: 1.6 &dollar;</literal
>) lorsqu'il valide un fichier. Dans les fichiers binaires, de tels remplacements peuvent corrompre le fichier et le rendre totalement inutilisable. Pour changer ce comportement, validez les fichiers binaires (ou d'autres fichiers comme PostScript) à l'aide d'une ligne de commande </para>

<para>
<screen
><command
>cvs add -kb <replaceable
>noms_de_fichiers</replaceable
></command
></screen>
</para>

<para
>Dans &cervisia; il suffit de choisir <menuchoice
><guimenu
> Fichier</guimenu
><guimenuitem
>Ajouter sous forme de binaires...</guimenuitem
></menuchoice
> </para>

</sect1>


<sect1 id="removingfiles">
<title
>Suppression de fichiers</title>

<para
>Tout comme l'ajout de fichiers, leur suppression s'exécute en deux étapes : en premier lieu, ils doivent avoir été enregistrés en tant que fichiers supprimés en choisissant <menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Supprimer du référentiel</guimenuitem
></menuchoice
> qui émet la commande </para>
<para>
<screen
><command
>cvs remove -f <replaceable
>noms_de_fichiers</replaceable
></command
></screen>
</para>

<para
>Cette modification apportée à la copie locale doit ensuite être validée, éventuellement en même temps que d'autres modifications du projet. </para>

<note
><para
>La commande ci-dessus ne fonctionne que si le fichier est à jour. Dans le cas contraire, vous obtenez un message d'erreur. Ce comportement est rationnel : si vous avez modifié le fichier en le comparant à la version présente dans le référentiel ou si un autre utilisateur a apporté certaines modifications, vérifiez d'abord si vous souhaitez réellement l'éliminer. </para
></note>

</sect1>
   
   
<sect1 id="addingremovingdirs">
<title
>Ajout et suppression de dossiers</title>

<para
>&CVS; gère les dossiers d'une manière fondamentalement différente des fichiers ordinaires. Comme ils ne sont pas soumis au contrôle de révision, vous ne pouvez pas distinguer les dossiers existants dans le projet à un moment donné. De plus, les dossiers ne peuvent jamais être explicitement supprimés (prévoyez de les supprimer directement dans le référentiel). </para>

<para
>À titre de remplacement, &CVS; suit la convention selon laquelle un dossier est dit <quote
>non existant</quote
> dans une version du projet s'il est vide. Pour respecter cette convention, utilisez l'option <option
>P</option
> pour <command
>cvs update</command
> et <command
>cvs checkout</command
>. Vous pouvez définir cette option dans le menu <menuchoice
><guimenu
>Paramètres</guimenu
><guimenuitem
>Élaguer les dossiers vides lors de la mise à jour</guimenuitem
></menuchoice
>. </para>

<para
>Un dossier peut être ajouté au référentiel à l'aide de la commande </para>

<para>
<screen
><command
>cvs add <replaceable
>nom_de_dossier</replaceable
></command
></screen>
</para>

<para
>faisant partie de l'élément de menu <menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Ajouter au référentiel</guimenuitem
></menuchoice
>. Notez que contrairement à l'ajout de fichiers, l'ajout de dossiers n'exige aucune validation ultérieure. </para>

</sect1>


<sect1 id="commitingfiles">
<title
>Validation de fichiers</title>

<para
>Lorsque vous avez apporté un certain nombre de changements à votre copie de travail et que vous souhaitez les mettre à la disposition d'autres développeurs, vous devez les valider (on parle de <quote
>commit</quote
>). Une validation place vos versions des fichiers modifiés dans le référentiel comme s'il s'agissait de nouvelles révisions. Lorsqu'un autre développeur effectue une mise à jour ultérieurement, vos modifications apparaissent dans sa copie de travail. </para>

<para
>Pour valider deux fichiers, sélectionnez-les dans la fenêtre principale de &cervisia; et choisissez <menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Valider...</guimenuitem
></menuchoice
>. </para>

<figure id="screenshot-commit" float="1">
<title
>Une copie d'écran de la boîte de dialogue de validation de &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="commit.png"/></imageobject>
</mediaobject>
</figure>

<para
>Vous obtenez une boîte de dialogue affichant dans sa partie supérieure une liste des fichiers sélectionnés et dans sa partie inférieure un message du journal indiquant vos changements. Lorsque vous avez terminé avec la boîte de dialogue, la commande </para>

<para>
<screen
><command
>cvs commit -m <replaceable
>message</replaceable
> <replaceable
>noms_de_fichiers</replaceable
></command
></screen>
</para>

<para
>est utilisée. &cervisia; vous aide de plusieurs manières à trouver un message de journal significatif : premièrement, dans la liste des fichiers, vous pouvez double-cliquer sur un fichier ou appuyer sur <keycap
>Entrée</keycap
> de façon à afficher les changements que vous avez apportés au fichier. Deuxièmement, &cervisia; fournit une liste des messages de journal précédemment utilisés dans une liste déroulante. Troisièmement, cette boîte de dialogue est intégrée à l'éditeur Changelog de &cervisia; décrit ci-après. </para>

<note
><para
><errorname
>Le contrôle de la mise à jour a échoué</errorname
> est une erreur fréquente que vous êtes susceptible de rencontrer lors de la validation. Celle-ci indique qu'un utilisateur a validé des changements dans le référentiel depuis votre dernière mise à jour ou, plus techniquement, que votre révision <literal
>BASE</literal
> n'est pas la plus récente sur sa branche. Dans ce cas, &CVS; refuse de fusionner vos modifications dans le référentiel. La solution consiste à mettre à jour, résoudre les conflits et exécuter une nouvelle validation. Naturellement, si vous travaillez sur un projet de logiciel, il est de bon ton de vérifier si le programme fonctionne encore après l'avoir actualisé - somme toute, il pourrait exister des interactions néfastes entre vos modifications et les autres modifications qui cassent le code. </para
></note>

<note>
<para
>Une autre erreur courante provoque le message d'erreur <errorname
>Le marqueur rémanent « X » pour le fichier « X » n'est pas une branche</errorname
>. Ceci se produit si vous tentez de valider un fichier que vous avez précédemment placé dans une révision ou un marqueur particulier à l'aide de la commande </para>
<para>
<screen
><prompt
>%</prompt
><userinput
>cvs update -r X</userinput
></screen>
</para>
<para
>(que l'élément de menu <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Mettre à jour vers le marqueur/à la date...</guimenuitem
></menuchoice
>) utilise &pex;. Dans un tel cas, le marqueur placé sur le fichier devient rémanent. Cela signifie que des mises à jour ultérieures ne vous placent pas dans la toute dernière révision de la branche. Si vous souhaitez valider d'autres révisions sur la branche, vous devez exécuter une mise à jour sur le marqueur de la branche avant de procéder à d'autres validations. </para>
</note>

<para
>&cervisia; permet aisément de maintenir un fichier ChangeLog conforme au format énoncé dans les directives de codage GNU. Pour l'utiliser, choisissez <menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Insérer l'élément ChangeLog...</guimenuitem
></menuchoice
>. Si un fichier nommé <filename
>ChangeLog</filename
> existe dans le dossier de plus haut niveau de votre copie locale, ce fichier est chargé et vous avez la possibilité de l'éditer. À cette fin, un élément comportant la date actuelle et votre nom d'utilisateur (configurable selon la description de <xref linkend="customize-general"/>) est inséré en haut du fichier. Lorsque vous terminez ce dialogue en cliquant sur <guibutton
>OK</guibutton
>, la boîte de dialogue de validation que vous ouvrez ensuite comporte le message de journal défini lors de votre dernière saisie dans le <quote
>change log</quote
>. </para>

</sect1>


<sect1 id="resolvingconflicts">
<title
>Résolution de conflits</title>

<para
>Des conflits peuvent se produire chaque fois que vous avez apporté des changements à un fichier qui était également modifié par un autre développeur. Le conflit est détecté par &CVS; lorsque vous mettez à jour le fichier modifié. &CVS; tente alors de fusionner les modifications validées par l'autre développeur dans votre copie de travail. La fusion échoue si ses modifications et les vôtres se trouvent dans des portions du fichier qui se chevauchent et le serveur &CVS; émet un message d'erreur. </para>

<para
>Il vous appartient à présent de résoudre ces conflits avant de valider le fichier. &CVS; refusera de valider tout fichier conflictuel jusqu'à ce qu'il ait été édité. Naturellement, vous bénéficiez d'une grande liberté pour résoudre plusieurs conflits : pour chacun, vous pouvez décider de choisir une des deux versions de remplacement. Vous pouvez également décider que les deux approches ont échoué et réécrire une routine entière ou le fichier complet <quote
>ex nihilo</quote
>. </para>

<para
>Dans la fenêtre principale de &cervisia;, les fichiers conflictuels sont indiqués par <quote
>Conflit</quote
> en rouge dans la colonne d'état. Vous pouvez naturellement résoudre les conflits de manière traditionnelle à partir de la fenêtre principale : double-cliquez simplement dans le fichier concerné et éditez-le à l'aide de votre éditeur favori. Toutefois, vous pouvez également choisir d'utiliser la boîte de dialogue disponible via <menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Résoudre...</guimenuitem
></menuchoice
>. </para>

<figure id="screenshot-resolve" float="1">
<title
>Une copie d'écran de la boîte de dialogue de résolution de &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="resolve.png"/></imageobject>
<textobject
><phrase
>Une copie d'écran de la boîte de dialogue de résolution de &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>Dans la partie supérieure da la boîte de dialogue, votre version du fichier s'affiche du côté gauche et la version du référentiel du côté droit. Les différences entre les deux sont signalées en rouge. Sous ces deux versions, vous pouvez voir la version fusionnée qui sera enregistrée après avoir cliqué sur le bouton <guibutton
>Enregistrer</guibutton
>. </para>

<para
>Vous pouvez basculer entre les sections qui diffèrent en cliquant sur <guibutton
>&lt;&lt;</guibutton
> et <guibutton
>&gt;&gt;</guibutton
>. Au milieu de la partie inférieure de la boîte de dialogue, s'affiche la section actuellement mise en surbrillance. Par exemple, <literal
>2 sur 8</literal
> signifie que vous êtes actuellement positionné sur la deuxième section présentant des différences, sur un total de 8. Vous pouvez maintenant décider section par section quelle est, des deux versions, celle que vous souhaitez fusionner dans le fichier. En cliquant sur <guibutton
>A</guibutton
>, vous choisissez la version que vous avez éditée. En cliquant sur <guibutton
>B</guibutton
>, vous choisissez la version du référentiel. </para>

</sect1>

</chapter>


<chapter id="obtaininginformation">
<title
>Obtention d'informations sur les fichiers</title>

<sect1 id="browsinglogs">
<title
>Exploration des journaux cvs</title>

<para
>Lorsque vous mettez un fichier en surbrillance dans la fenêtre principale et que vous choisissez <guimenuitem
>Explorer le journal</guimenuitem
> dans le menu <guimenu
>Affichage</guimenu
>, une </para>

<para>
<screen
><command
>cvs log <replaceable
>noms_de_fichiers</replaceable
></command
></screen>
</para>

<para
>commande est émise et une boîte de dialogue reflétant l'historique de la version du fichier en surbrillance s'affiche. </para>

<figure float="1">
<title
>Une copie d'écran de la boîte de dialogue Explorer les journaux de &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="logtree.png"/></imageobject>
<textobject
><phrase
>Une copie d'écran de la boîte de dialogue Explorer les journaux de &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>Vous pouvez choisir d'afficher l'historique sous forme d'arborescence ou de liste. Votre préférence est naturellement affaire de goût et dépend des informations qui vous intéressent. L'arborescence est une représentation intuitive de ce que tel ou tel auteur a réalisé sur les différentes branches. Les messages de journal correspondants s'affichent sous forme d'infobulles. La liste est par nature linéaire et ne fournit donc pas un affichage immédiat des branches. En revanche, elle concentre différemment les informations pertinentes sur une surface d'écran moindre, notamment l'heure de chaque changement du fichier et la première partie du message du journal. </para>

<para
>Pour obtenir des informations complémentaires sur une révision particulière, cliquez sur celle-ci dans la liste ou dans l'affichage arborescente. Les champs placés dans la partie centrale de la boîte de dialogue sont alors remplis à l'aide des informations complètes fournies par <command
>cvs log</command
>. Vous pouvez mettre deux révisions en surbrillance, appelées <quote
>A</quote
> et <quote
>B</quote
> qui sont pertinentes si vous utilisez des fonctions complémentaires prévues par les boutons. Vous pouvez choisir la révision <quote
>A</quote
> à l'aide du bouton gauche de la souris, la révision <quote
>B</quote
> avec celui du milieu. En mode liste, vous pouvez également naviguer avec les touches du curseur. Pour mettre en évidence les révisions <quote
>A</quote
> et <quote
>B</quote
>, utilisez les raccourcis clavier <keycombo
><keycap
>Ctrl</keycap
><keycap
>A</keycap
></keycombo
>, <keycombo
><keycap
>Ctrl</keycap
><keycap
>B</keycap
></keycombo
>, respectivement. </para>

<para
>Si vous cliquez sur le bouton <guibutton
>Annoter</guibutton
>, vous obtenez une boîte de dialogue qui affiche le texte du fichier appartenant à la version identifiée par <quote
>A</quote
>. Chaque ligne est préfixée par les informations relatives à la personne qui les a éditées en dernier lieu et la révision au cours de laquelle ceci s'est produit. </para>

<para
>Si vous cliquez sur le bouton <guibutton
>Diff</guibutton
>, un appel <command
>cvs diff</command
> est émis et vous obtenez une boîte de dialogue affichant toutes les modifications entre les deux versions mises en surbrillance. Pour mieux voir les changements, on utilise des couleurs différentes signalant les lignes ajoutées, supprimées ou simplement modifiées. </para>

</sect1>

   
<sect1 id="browsinghistory">
<title
>Exploration de l'historique</title>

<para
>Si la journalisation est activée sur le référentiel utilisé, &cervisia; peut vous présenter un historique de certains événements comme les extractions, les validations, les marqueurs de diffusion (<quote
>rtags</quote
>), les mises à jour et les diffusions. Choisissez <guimenuitem
>Historique</guimenuitem
> dans le menu <guimenu
>Affichage</guimenu
>. &cervisia; émet la commande </para>

<para>
<screen
><command
>cvs history -e -a</command
></screen>
</para>

<note
><para
>Cette commande récupère le fichier de journalisation complet du serveur, c'est-à-dire une liste des événements concernant tous les utilisateurs et tous les modules. Cela peut représenter une énorme quantité de données ! </para
></note>

<para
>Vous pouvez à présent voir la liste des événements, triés par date. Le type de l'événement est affiché dans la deuxième colonne : </para>

<itemizedlist>

<listitem
><para
>Extraction - L'utilisateur affiché dans la colonne <quote
>Auteur</quote
> a extrait un module </para
></listitem>

<listitem
><para
>Marqueur  Un utilisateur a employé la commande <command
>cvs rtag</command
>. Notez que l'usage de <command
>cvs tag</command
> (comme le fait la commande <menuchoice
> <guimenu
>Avancé</guimenu
><guimenuitem
>Marqueur/branche...</guimenuitem
></menuchoice
> de &cervisia;) n'est pas enregistrée dans la base de données des historiques. Ceci est dû à des raisons <quote
>historiques</quote
> (consultez la <acronym
>FAQ</acronym
> de &CVS;). </para
></listitem>

<listitem
><para
>Diffusion - Un utilisateur a diffusé un module. En réalité, cette commande est rarement utilisée et ne présente pas un grand intérêt. </para
></listitem>

<listitem
><para
>Mise à jour, supprimé - Un utilisateur a effectué une mise à jour sur un fichier qui était supprimé dans le référentiel. En conséquence, le fichier était supprimé dans sa copie de travail. </para
></listitem>

<listitem
><para
>Mise à jour, copié - Un utilisateur a effectué une mise à jour sur un fichier. Une nouvelle version était copiée dans le dossier de travail. </para
></listitem>

<listitem
><para
>Mise à jour, fusionné - Un utilisateur a effectué une mise à jour sur un fichier. Les modifications apportées à la version du référentiel dans le fichier étaient fusionnées dans sa copie de travail. </para
></listitem>

<listitem
><para
>Mise à jour, conflit - Un utilisateur a effectué une mise à jour sur un fichier et un conflit avec ses propres modifications était détecté. </para
></listitem>

<listitem
><para
>Validation, modifié - Un utilisateur a validé un ficher modifié. </para
></listitem>

<listitem
><para
>Validation, ajouté - Un utilisateur a ajouté un fichier et l'a validé. </para
></listitem>

<listitem
><para
>Validation, supprimé - Un utilisateur a supprimé un fichier et l'a validé. </para
></listitem>

</itemizedlist>

<figure id="screenshot-history" float="1">
<title
>Une copie d'écran de la boîte de dialogue d'historique de &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="history.png"/></imageobject>
<textobject
><phrase
>Une copie d'écran de la boîte de dialogue d'historique de &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>Vous pouvez trier la liste à l'aide d'autres critères en cliquant simplement sur l'en-tête de colonne respectif. Pour trier les éléments d'historique qui vous intéressent, il existe différentes options de filtre activées au moyen de cases à cocher : </para>

<itemizedlist>
<listitem
><para
>Afficher les événements validation - affiche les validations </para
></listitem>
<listitem
><para
>Afficher les événements extraction - affiche les extractions</para
></listitem>
<listitem
><para
>Afficher les événements marqueur - affiche les marquages</para
></listitem>
<listitem
><para
>Afficher d'autres événements - affiche des événements non inclus ci-dessus</para
></listitem>
<listitem
><para
>Uniquement l'utilisateur - affiche uniquement les événements déclenchés par un utilisateur particulier</para
></listitem>
<listitem
><para
>Uniquement la correspondance des noms de fichiers - filtre les noms de fichiers à l'aide d'une expression rationnelle</para
></listitem>
<listitem
><para
>Uniquement la correspondance des noms de dossiers - filtre les noms de dossiers à l'aide d'une expression rationnelle</para
></listitem>
</itemizedlist>

<para
>Les caractères spéciaux reconnus par le comparateur d'expressions rationnelles sont : </para>

<itemizedlist>

<listitem
><para
><literal
>x*</literal
> correspond à un nombre quelconque d'occurrences du caractère <literal
>x</literal
>. </para
></listitem>

<listitem
><para
><literal
>x+</literal
> correspond à une ou plusieurs occurrences du caractère <literal
>x</literal
>. </para
></listitem>

<listitem
><para
><literal
>x?</literal
> correspond à zéro ou une occurrence du caractère <literal
>x</literal
>. </para
></listitem>

<listitem
><para
><literal
>^</literal
> correspond au début de la chaîne. </para
></listitem>

<listitem
><para
><literal
>$</literal
> correspond à la fin de la chaîne. </para
></listitem>

<listitem
><para
><literal
>{a cx z] </literal
> correspond à un jeu de caractères : ici &pex;, le jeu consiste en a, b, c, x, y, z. </para
></listitem>

</itemizedlist>

</sect1>


<sect1 id="diff">
<title
>Suivi des différences entre révisions</title>

<para
>Il existe plusieurs endroits dans &cervisia; où vous pouvez demander à une fenêtre d'afficher les différences entre les révisions d'un fichier : </para>

<itemizedlist>

<listitem
><para
>Dans la fenêtre principale, vous pouvez choisir <menuchoice
><guimenu
>Affichage</guimenu
><guimenuitem
>Différence par rapport au référentiel...</guimenuitem
></menuchoice
>. Celle-ci est basée sur la commande <command
>cvs diff</command
> et montre les différences entre la version de votre copie locale et la version que vous avez actualisée en dernier lieu (également appelée <literal
>BASE</literal
>). Ceci étant particulièrement utile juste avant de valider un fichier, essayez de trouver message de journal approprié. </para
></listitem>

<listitem
><para
>Dans la boîte de dialogue qui s'affiche lors de la validation d'un ensemble de fichiers, vous pouvez demander une fenêtre de différence en choisissant un nom de fichier dans la liste de sélection, soit en double-cliquant sur celui-ci, soit en appuyant sur <keycap
>Entrée</keycap
>. Celle-ci est pratiquement identique à l'utilisation de <menuchoice
><guimenu
>Affichage</guimenu
><guimenuitem
>Différence par rapport au référentiel...</guimenuitem
></menuchoice
> avec le fichier indiqué dans la fenêtre principale. </para
></listitem>

<listitem
><para
>Dans la boîte de dialogue Explorer les journaux, vous pouvez mettre en surbrillance deux révisions d'un fichier et demander une boîte de dialogue montrant les différences entre elles (consultez la section <xref linkend="browsinglogs"/>). </para
></listitem>

</itemizedlist>

<para
>Comme vous le pressentiez, &cervisia; ne se contente pas de transférer le résultat de la commande <command
>diff</command
> dans votre terminal, et présente un affichage graphique comme le montre la <xref linkend="screenshot-log"/>. </para>

<figure id="screenshot-log" float="1">
<title
>Une copie d'écran de la boîte de dialogue Diff de &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="diff.png"/></imageobject>
<textobject
><phrase
>Une copie d'écran de la boîte de dialogue Diff de &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>Le texte contenu dans la boîte de dialogue est une variante améliorée du texte fourni par la commande <quote
>diff</quote
> avec l'option <option
>u</option
>. Vous pouvez voir les versions présentant des différences dans deux fenêtres disposées de telle sorte qu'il est possible d'établir une comparaison côte à côte. Cela signifie qu'aux endroits où l'on a ajouté ou supprimé du texte, la fenêtre respective affiche des lignes vides ainsi que l'indicateur <literal
>+++++</literal
> placé du côté gauche. Partout ailleurs, le numéro actuel de chaque ligne est visible dans la colonne de gauche. </para>

<para
>Dans la deuxième colonne de la fenêtre de droite, le type de changement effectué apparaît. Les types possibles sont <literal
>Ajouter</literal
>, <literal
>Supprimer</literal
> et <literal
>Changer</literal
>. Les lignes respectives sont mises en surbrillance en bleu, vert et rouge. Au centre de la boîte de dialogue, une image compactée des indicateurs de couleur est affichée. Ainsi, vous pouvez obtenir un rapide aperçu de l'ensemble des changements apportés au fichier. Vous pouvez également vous orienter à l'aide de la position des régions colorées dans l'image compactée en vous servant des barres de défilement. </para>

<para
>Normalement, les barres de défilement des fenêtres gauche et droite sont synchronisées. Cela signifie que si vous faites défiler le côté gauche, le côté droit défile au même ryhme. Vous pouvez changer ce comportement en cochant la case <guibutton
>Synchroniser les barres de défilement</guibutton
>. </para>

<para
>Pour plus d'informations sur la manière de personnaliser la boîte de dialogue Diff, consultez <xref linkend="customize-commands"/>. </para>

</sect1>


<sect1 id="annotate">
<title
>Observation de l'affichage annoté d'un fichier</title>

<para
>Grâce à la commande <command
>cvs annotate</command
>, &CVS; offre la possibilité de voir - pour toutes les lignes d'un fichier - qui a modifié une ligne en tout dernier lieu. Cet affichage peut être utile pour découvrir qui a introduit un changement dans le comportement d'un programme ou à qui il convient de s'adresser à propos d'un changement ou d'un bogue dans le code. </para>

<para
>&cervisia; vous donne accès à cette fonctionnalité, mais enregistre en outre les informations de manière interactive. Vous obtenez un affichage annoté en choisissant <menuchoice
><guimenu
>Affichage</guimenu
><guimenuitem
>Annoté...</guimenuitem
></menuchoice
>. Une autre possibilité consiste à cliquer sur le bouton <guilabel
>Annoter</guilabel
> dans la boîte de dialogue Explorer le dialogue de journalisation. Vous pouvez voir une copie d'écran de la boîte de dialogue sur la<xref linkend="screenshot-annotate"/>. </para>

<figure id="screenshot-annotate" float="1">
<title
>Une copie d'écran de la boîte de dialogue Annoté de &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="annotate.png"/></imageobject>
<textobject
><phrase
>Une copie d'écran de la boîte de dialogue Mettre à jour vers le marqueur de &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>Dans la boîte de dialogue Annoté, s'affiche une fenêtre comportant la version la plus récente du fichier sélectionné. Les colonnes placées avant le texte vous présentent quelques informations relatives au tout dernier changemenr de chaque ligne. La première colonne affiche le numéro de révision. La deuxième colonne montre le nom de l'auteur de cette révision. Pour terminer, la troisième colonne indique la date du changement le plus récemment effectué sur la ligne. </para>

<para
>Par conséquent, lorsqu'une ligne vous paraît étrange ou que vous supposez un bogue à cet endroit, vous pouvez savoir immédiatement qui est responsable de cette ligne. Il est également possible de découvrir <emphasis
>pourquoi</emphasis
> cette ligne était modifiée. Pour ce faire, déplacez le curseur de la souris sur le numéro de révision indiqué. Une infobulle apparaît alors, qui affiche le message du journal ainsi que la date du changement. </para>

</sect1>

</chapter>


<chapter id="advancedusage">
<title
>Utilisation avancée</title>

<sect1 id="taggingbranching">
<title
>Marquage et branches</title>

<para
>Nous n'aborderons ici que les aspects techniques du marquage et des branches. Si vous êtes uniquement <emphasis
>utilisateur</emphasis
>, et non l'administrateur du référentiel, vous ne serez probablement pas confronté au problème. Si toutefois vous êtes votre propre administrateur, vous devriez d'abord vous documenter sur les problèmes non techniques relatifs aux branches, pour vous rendre compte du temps et du risque d'erreur que la maintenance d'un projet peut exiger. L'annexe contient quelques références sur ce thème. </para>

<para
>Le marquage simple est une opération que vous effectuez habituellement après réalisation d'une diffusion, pour pouvoir aisément revenir à l'état antérieurdu projet à ce moment. Les marqueurs se voient en principe attribuer un nom composé du nom du projet et de son numéro de version. Par exemple, &cervisia; 1.0 est disponible sous le marqueur <literal
>CERVISIA_1_0</literal
>. &cervisia; applique strictement les règles de &CVS; à propos des éléments constituant le nom de marqueur valable. Il doit commencer par une lettre et peut contenir des lettres, des chiffres, des traits d'union et des caractères de soulignement. </para>

<para
>Vous marquerez normalement le projet entier (bien que &CVS; permette naturellement de n'en marquer qu'un sous-ensemble). Pour ce faire, mettez en surbrillance le dossier de plus haut niveau dans la fenêtre et choisissez <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Marqueur/branche</guimenuitem
></menuchoice
>. Saisissez à présent le nom du marqueur, appuyez sur <keycap
>Entrée</keycap
> et tout est terminé ! </para>

<para
>La création d'une branche n'est guère plus difficile : dans la boîte de dialogue du marqueur, cochez la case <guibutton
>Créer une branche avec ce marqueur</guibutton
>. Vous pouvez également supprimer un marqueur existant : choisissez <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Supprimer un marqueur</guimenuitem
></menuchoice
> dans la fenêtre principale. </para>

<para
>Voici plusieurs manières d'exécuter une mise à jour vers un état particulier du projet : </para>

<itemizedlist>

<listitem
><para
>Vous pouvez effectuer une mise à jour vers un marqueur particulier. Utilisez <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
> Mettre à jour vers le marqueur/à la date</guimenuitem
></menuchoice
> pour ce faire. On utilise la même procédure pour la mise à jour vers une branche. &cervisia; émet la commande </para>

<para>
<screen
><command
>cvs update -r <replaceable
>marqueur</replaceable
></command
></screen>
</para
></listitem>

<listitem
><para
>Vous pouvez effectuer une mise à jour à une date particulière. Cela peut s'avérer utile si une erreur s'était introduite dans le projet entre deux diffusions. Ainsi, vous savez approximativement entre lesquelles et vous avez une idée du moment où elle est s'est produite. Vous pouvez vous placer sur une date quelconque en choisissant <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Mettre à jour vers le marqueur/à la date</guimenuitem
></menuchoice
> et en cochant la case <guibutton
>Mettre à jour à la date</guibutton
>. Dans le champ situé au-dessous, vous pouvez saisir une grande diversité de formats de dates. Un format possible est <literal
>aaaa-mm-jj</literal
> où <literal
>aaaa</literal
> correspond à l'année, <literal
>mm</literal
> au mois (numériquement) et  <literal
>jj</literal
> au jour. D'autres solutions comportent des phrases en français comme <literal
>hier</literal
> ou <literal
>il y a 2 semaines</literal
>. Si vous préférez cette option, &cervisia; utilise la commande </para>

<para>
<screen
><command
>cvs update -D <replaceable
>date</replaceable
></command
></screen>
</para
></listitem>

<listitem
><para
>Les deux options ci-dessus créent un marqueur ou une date <quote
>rémanent(e)</quote
>. Cela signifie que vous ne pouvez pas valider d'autres modifications sur ces fichiers (à moins que le marqueur ne soit un marqueur de branche). Pour revenir à la jonction, également appelée branche <literal
>HEAD</literal
>, utilisez l'élément de menu <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Mettre à jour vers HEAD</guimenuitem
></menuchoice
>. Il en résulte une commande </para>
<para>
<screen
><command
>cvs update <option
>A</option
></command
></screen>
</para
></listitem>

</itemizedlist>

<figure id="screenshot-updatetag" float="1">
<title
>Une copie d'écran de la boîte de dialogue Mettre à jour vers le marqueur de &cervisia;</title>
<mediaobject>
<imageobject
><imagedata format="PNG" fileref="updatetag.png"/></imageobject>
<textobject
><phrase
>Une copie d'écran de la boîte de dialogue Mettre à jour vers le marqueur de &cervisia;</phrase
></textobject>
</mediaobject>
</figure>

<para
>La fusion de modifications d'une branche vers la branche actuelle constitue un autre aspect du concept des branches. Si vous projetez de l'exécuter, choisissez <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Fusionner...</guimenuitem
></menuchoice
>. La boîte de dialogue qui apparaît à présent vous offre deux options : </para>

<para
>Soit vous pouvez fusionner toutes les modifications effectuées sur une branche vers la branche actuelle. Dans ce cas, cochez la case <guibutton
>Fusionner à partir de la branche</guibutton
> et remplissez la branche à partir de laquelle vous souhaitez effectuer la fusion. &cervisia; exécute alors la commande </para>

<para>
<screen
><command
>cvs update <option
>j</option
> <replaceable
>marqueur_de_branche</replaceable
></command
></screen>
</para>

<para
>L'autre possibilité consiste à fusionner uniquement les modifications effectuées entre deux marqueurs sur une branche. Ceci se produit habituellement lorsque vous fusionnez de la même branche vers la jonction plusieurs fois. Dans ce cas, cochez la case <guibutton
>Fusionner les modifications</guibutton
> et saisissez (dans l'ordre correct) les deux marqueurs correspondants. Il en resulte une commande </para>

<para>
<screen
><command
>cvs update <option
>-j</option
> <replaceable
>marqueurdebranche1</replaceable
> <option
>-j</option
> <replaceable
>marqueurdebranche2</replaceable
></command
></screen>
</para>

</sect1>


<sect1 id="watches">
<title
>Utilisation des alertes</title>

<para
>Une alerte est le nom conventionnel de la fonction de &CVS; prévue pour avertir les utilisateurs du référentiel dès qu'un fichier a été modifié. L'utilisation des alertes exige la configuration correcte du fichier <filename
><envar
>$CVSROOT</envar
>/CVSROOT/notifiy</filename
> Cet aspect n'est pas abordé ici ; si vous avez besoin d'informations complémentaires sur la configuration côté administrateur, consultez un des ouvrages répertoriés dans l'annexe. </para>

<para
>La prise en charge des alertes via &cervisia; concerne six éléments de menu. </para>

<para
>Pour ajouter une alerte à un ou plusieurs fichiers, utilisez <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Ajouter une alerte...</guimenuitem
></menuchoice
>. La boîte de dialogue obtenue vous permet de choisir d'être averti de n'importe quel type d'événement que &CVS; prend en charge. Par exemple, si vous souhaitez être averti uniquement lors de la validation d'un fichier, cochez les cases <guibutton
>Uniquement</guibutton
> et <guibutton
>Validations</guibutton
>. Si vous désirez être averti de tout événement relatif aux fichiers en surbrillance, cochez la case <guibutton
>Tous</guibutton
>. Lorsque vous acceptez le dialogue, utilisez la ligne de commande </para>

<para>
<screen
><command
>cvs watch add -a commit <replaceable
>noms_de_fichiers</replaceable
></command
></screen>
</para>

<para
>ou une option similaire, en fonction des événements que vous choisissez de surveiller. </para>

<para
>Lorsque plus aucun fichier ne vous intéresse, vous pouvez supprimer vos alertes en conséquence. Pour ce faire, utilisez <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Supprimer l'alerte...</guimenuitem
></menuchoice
>. La boîte de dialogue obtenue offre les mêmes options que le formulaire rempli lors de l'ajout de l'alerte. Lorsque vous confirmez ce dialogue, &cervisia; émet la commande </para>

<para>
<screen
><command
>cvs watch remove <replaceable
>noms_de_fichiers</replaceable
></command
></screen>
</para>

<para
>éventuellement avec une option <option
>a</option
> pour les événements choisis. </para>

<para
>Pour terminer, vous pouvez obtenir une liste des utilisateurs surveillant deux fichiers. Choisissez <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Afficher les surveillances</guimenuitem
></menuchoice
>. L'utilisation de cet élément de menu provoque la commande </para>

<para>
<screen
><command
>cvs watchers <replaceable
>noms_de_fichiers</replaceable
></command
></screen>
</para>

<para
>Dans le scénario d'utilisation normale de &CVS;, chaque développeur travaille séparément dans la copie locale qu'il a extraite. Lorsqui'il veut modifier un fichier quelconque, il peut simplement l'ouvrir dans son éditeur et commencer à travailler dessus. Personne d'autre n'aura connaissance de ce travail jusqu'à sa validation. </para>

<para
>Pour certains groupes de développeurs, ce n'est pas le modèle de coopération préféré. Ils veulent être avertis à propos des personnes qui travaillent sur un fichier <emphasis
>dès qu'</emphasis
>ils commencent à travailler dessus. Pour ce faire, &CVS; a prévu des commandes supplémentaires. Avant de démarrer l'édition d'un fichier, choisissez-le dans la fenêtre principale de &cervisia; et choisissez <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Éditer</guimenuitem
></menuchoice
>. Ceci exécute la commande </para>

<para>
<screen
><command
>cvs edit <replaceable
>noms_de_fichiers</replaceable
></command
></screen>
</para>

<para
>Cette commande émet une notification à quiconque a défini une alerte <literal
>edit</literal
> sur ce fichier. Elle vous enregistre également en tant qu'<emphasis
>éditeur</emphasis
> du fichier. Vous pouvez obtenir une liste de tous les éditeurs d'un fichier particulier à l'aide de <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Afficher les éditeurs</guimenuitem
></menuchoice
>. Ceci équivaut à saisir sur la ligne de commande </para>

<para>
<screen
><command
>cvs editors <replaceable
>noms_de_fichiers</replaceable
></command
></screen>
</para>

<para
>Une session d'édition se termine automatiquement lorsque vous validez le fichier affecté. À ce moment, une notification <literal
>unedit</literal
> est envoyée à toutes les personnes ayant enregistré une alerte particulière sur le fichier. Naturellement, vous ne voudrez parfois pas valider le fichier, mais interrompre la session d'édition et revenir à la version précédente du fichier. Pour ce faire, utilisez <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Annuler l'édition</guimenuitem
></menuchoice
>. Notez que &cervisia; ne vous demande aucune confirmation ! Cela signifie que si vous employez cet élément de menu, tout votre travail effectué depuis l'utilisation de <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Éditer</guimenuitem
></menuchoice
> sera perdu. &cervisia; utilise précisément la ligne de commande </para>

<para>
<screen
><command
>echo y | cvs unedit <replaceable
>noms_de_fichiers</replaceable
></command
></screen>
</para>

<para
>Jusqu'ici, nous n'avons abordé que le cas où les développeurs utilisent les éditions et les annulations de celles-ci volontairement. De plus, &CVS; prend en charge un modèle qui <emphasis
>impose</emphasis
> l'usage de ces commandes. Nous ne décrirons pas plus avant la commande chargée de basculer vers ce modèle, <command
>cvs watch on</command
>, car elle est surtout employée par l'administrateur du référentiel. Aspect toutefois important pour le développeur lorsque le projet impose des éditions, les copies de travail sont extraites <emphasis
>en lecture seule</emphasis
>. Cela signifie que vous ne pouvez pas éditer un fichier par défaut (à moins de faire usage d'astuces comme <command
>chmod</command
>). Le fichier n'est rendu inscriptible que lorsque vous utilisez <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Éditer</guimenuitem
></menuchoice
>. Il redevient en lecture seule lorsque vous validez le fichier ou que vous utilisez <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Annuler l'édition</guimenuitem
></menuchoice
>. </para>

<para
>L'interface d'édition de &cervisia; offre une aide pour les projets imposant des alertes, mais d'une manière différente. Si vous avez simplement démarré un éditeur avec un fichier en lecture seule par un double clic ou à l'aide de <menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Éditer</guimenuitem
></menuchoice
>, vous ne pourrez pas enregistrer vos modifications ultérieurement. Il y a bien entendu une raison à cela : chaque fois que vous voulez modifier un fichier, veillez à exécuter <command
>cvs edit</command
> au préalable, afin que tous les utilisateurs surveillant le fichier soient avertis que vous travaillez dessus. </para>

<para
>Dans un tel cas, il est souhaitable de cocher l'option <menuchoice
><guimenu
>Paramètres</guimenu
><guimenuitem
>Exécuter "cvs edit" automatiquement si nécessaire</guimenuitem
></menuchoice
>. Désormais, chaque fois que vous éditez un fichier à l'aide d'un double clic, &cervisia; réalise un <command
>cvs edit</command
> avant l'exécution proprement dite de l'éditeur. Vous pouvez alors éditer votre fichier comme d'habitude. Votre travail terminé, validez vos fichiers : les fichiers validés sont à nouveau en lecture seule. </para>

</sect1>


<sect1 id="locking">
<title
>Verrouillage</title>

<para
>Le modèle de développement habituellement suivi lors de l'utilisation de &CVS; est appelé <emphasis
>validations non réservées</emphasis
>. Chaque développeur dispose de sa propre copie locale dans laquelle il peut éditer les fichiers selon son gré. Lors de l'utilisation des fonctionnalités d'alerte - comme <command
>cvs edit</command
> -, plusieurs développeurs peuvent travailler simultanément sur des fichiers. Les changements effectués par un autre développeur sont fusionnés dans la copie locale au moment de l'exécution d'une mise à jour. </para>

<para
>D'autres systèmes de contrôle de révision - comme <acronym
>RCS</acronym
> et <application
>SourceSafe</application
> utilisent un modèle différent. Lorsqu'un développeur veut éditer un fichier, il doit le <emphasis
>verrouiller</emphasis
>. Un seul développeur à la fois peut verrouiller un fichier. Lorsqu'il a terminé l'édition, le verrou est libéré. D'une part, ce modèle ne génère jamais de conflit. D'autre part, deux développeurs ne peuvent pas travailler sur le même fichier en même temps, même lorsque leurs changements n'ont aucune influence réciproque. Ceci peut être un goulot d'étranglement. Nous n'allons pas étudier les bénéfices organisationnels des deux approches. Signalons néanmoins que même si &CVS; prend en charge le verrouillage, ce n'est pas le meilleur moyen de travailler avec. N'utilisez pas ces fonctionnalités à moins d'être sûr que votre chef de projet les autorise. </para>

<para
>&cervisia; permet de verrouiller des fichiers de la manière suivante. Choisissez les fichers désirés dans la fenêtre principale. Choisissez ensuite <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Verrouiller</guimenuitem
></menuchoice
>. Ceci exécute la commande </para>

<para>
<screen
><command
>cvs admin -l <replaceable
>noms_de_fichiers</replaceable
></command
></screen>
</para>

<para
>L'effet inverse est obtenu en utilisant <menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Déverrouiller</guimenuitem
></menuchoice
>. Ceci exécute la commande</para>

<para>
<screen
><command
>cvs admin -u <replaceable
>noms_de_fichiers</replaceable
></command
></screen>
</para>

</sect1>

</chapter>


<chapter id="customization">
<title
>Personnalisation de &cervisia;</title>

<para
>Vous pouvez personnaliser &cervisia; de diverses manières selon vos besoins et vos préférences. Certaines options que vous pourriez être amené à changer régulièrement sont directement accessibles dans le menu <guimenu
>Option</guimenu
>. D'autres sont réunies dans une boîte de dialogue commune accessible via <menuchoice
><guimenu
>Option</guimenu
><guimenuitem
>Paramètres...</guimenuitem
></menuchoice
>. </para>


<sect1 id="customize-general">
<title
>Général</title>

<formalpara id="customize-username">
<title
>Nom d'utilisateur pour l'éditeur ChangeLog</title>
<para
>Chaque fois que vous utilisez l'élément de menu <menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Insérer l'élément ChangeLog...</guimenuitem
></menuchoice
>, un nouvel élément ChangeLog est généré avec la date actuelle et votre nom d'utilisateur. En prinicipe, il est de bon ton d'insérer votre nom complet et votre adresse électronique dans chacun de vos éléments ChangeLog. Vous pouvez configurer ici ce comportement. </para>
</formalpara>

<formalpara id="customize-cvspath">
<title
>Chemin vers CVS</title>
<para
>Configurez ici le nom (ou le chemin) vers le client en ligne de commande <command
>cvs</command
>. Par défaut, &cervisia; utilise l'exécutable qu'il trouve dans votre <envar
>$PATH</envar
>. </para>
</formalpara>

<formalpara id="customize-editor">
<title
>Éditeur</title>
<para
>Vous pouvez configurer ici l'éditeur qui sera appelé lorsqu'un fichier placé dans la  fenêtre principale fait l'objet d'un double clic. Pour exécuter l'éditeur, la saisie effectuée ici est concaténée avec le nom du fichier et transmise à un interpréteur de commandes. L'utilisation de programmes comme <command
>gnuclient</command
> y est donc admise. Vous pouvez également saisir ici la chaîne <envar
>$EDITOR</envar
> si votre variable d'environnement <envar
>$EDITOR</envar
> pointe sur un éditeur ouvrant une fenêtre X11 proprement dite. </para>
</formalpara>

</sect1>

<sect1 id="customize-commands">
<title
>Commandes diverses</title>

<formalpara id="customize-context">
<title
>Nombre de lignes de contexte dans la boîte de dialogue Diff</title>
<para
>La boîte de dialogue Diff de &cervisia; utilise l'option <option
>U</option
> pour <command
>diff</command
>. Ceci permet à <command
>diff</command
> d'afficher un nombre limité de lignes autour de chaque zone de différence. Vous pouvez définir ici l'argument vers <option
>U</option
>. </para>
</formalpara>

<formalpara id="customize-diffopt">
<title
>Options additionnelles pour cvs diff</title>
<para
>Vous pouvez ajouter ici des arguments supplémentaires à <command
>diff</command
>. Citons l'exemple connu, <option
>-b</option
>, qui permet à <command
>diff</command
> d'ignorer les changements dans l'ensemble des blancs. </para>
</formalpara>

<formalpara id="customize-tabwidth">
<title
>Largeur d'une tabulation dans la boîte de dialogue Diff</title>
<para
>Dans la boîte de dialogue Diff, les tabulations présentes dans votre fichier ou dans la sortie de la commande <command
>diff</command
> sont rendues par un nombre fixe de caractères d'espacement. Par défaut, chaque tabulation est remplacée par huit espaces, mais vous pouvez définir ici un autre nombre. </para>
</formalpara>

<formalpara id="customize-difffrontend">
<title
>Interface Diff externe</title>
<para
>Lors de l'utilisation de l'une des fonctionnalités affichant la boîte de dialogue Diff, comme <menuchoice
><guimenu
>Affichage</guimenu
><guimenuitem
>Différence par rapport au référentiel...</guimenuitem
></menuchoice
>, &cervisia; exécute son interface Diff interne. Si vous en préférez une autre, comme <application
>Kompare</application
>, <application
>TkDiff</application
> ou <application
>xxdiff</application
>, configurez ici ce comportement. </para>
</formalpara>

<formalpara id="customize-startstatus">
<title
>Démarrer <menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>État</guimenuitem
></menuchoice
> automatiquement</title
> 

<para
>Lorsque vous cochez cette option, la commande <menuchoice
> <guimenu
>Fichier</guimenu
><guimenuitem
>État</guimenuitem
> </menuchoice
> est démarrée chaque fois que vous ouvrez une copie locale. Du fait que cette commande peut exiger un certain temps et nécessite également une connexion au serveur pour les référentiels distants (ce qui la rend impropre à une utilisation hors connexion), vous pouvez définir cette option séparément pour les référentiels locaux et distants. </para>
</formalpara>

<formalpara id="customize-timeout">
<title
>Délai après lequel apparaît une boîte de dialogue de progression</title>
<para
>Presque toutes les commandes de &CVS; démarrées dans une copie locale appartenant à un référentiel distant exigent une connexion au serveur. Celui-ci est influencé par des retards provenant de la connexion réseau ou par une charge élevée sur le serveur. C'est pourquoi, pour les commandes comme <menuchoice
><guimenu
>Affichage</guimenu
><guimenuitem
>Différence par rapport au référentiel...</guimenuitem
></menuchoice
>, &cervisia; ouvre une boîte de dialogue indiquant que la commande s'exécute encore et vous permet de l'interrompre. De plus, ce dialogue sert à afficher vos messages d'erreur dans &CVS;. Comme il peut devenir ennuyeux au bout d'un certain temps, il n'est affiché qu'après un délai donné fixé à 4 secondes par défaut. Vous pouvez changer ici cette valeur. </para>
</formalpara>

<formalpara id="customize-compression">
<title
>Niveau de compactage par défaut</title>
<para
>Le client <command
>cvs</command
> compacte les fichiers et les correctifs lors de leur transfert sur un réseau. Le niveau de compactage peut être défini à l'aide de l'option en ligne de commande <option
>-z</option
>. La mise au point de &cervisia; permet l'utilisation de cette option en configurant ici le niveau.. La valeur définie ici n'est utilisée que par défaut. Il existe un paramètre supplémentaire disponible dans <menuchoice
><guimenu
>Référentiel</guimenu
><guimenuitem
>Référentiels...</guimenuitem
></menuchoice
>. </para>
</formalpara>

</sect1>


<sect1 id="customize-look">
<title
>Apparence et egonomie</title>

<formalpara id="customize-splitter">
<title
>Scinder la fenêtre principale horizontalement</title>
<para
>La fenêtre principale de &cervisia; est normalement scindée verticalement en une fenêtre qui présente l'arborescence des fichiers et une qui affiche la sortie. À l'inverse, vous pouvez les organiser horizontalement. </para>
</formalpara>

<formalpara id="customize-protocolfont">
<title
>Police pour la fenêtre de protocole</title>
<para
>Il s'agit de la police utilisée dans la fenêtre de protocole, celle qui affiche la sortie du client <command
>cvs</command
>. </para>
</formalpara>

<formalpara id="customize-annotatefont">
<title
>Police pour l'affichage annoté</title>
<para
>Il s'agit de la police utilisée dans l'affichage annoté. </para>
</formalpara>

<formalpara id="customize-difffont">
<title
>Police pour l'affichage Diff</title>
<para
>Il s'agit de la police utilisée dans les boîtes de dialogue Diff. </para>
</formalpara>

</sect1>
</chapter>


<chapter id="appendix">
<title
>Annexe</title>

<sect1 id="ignoredfiles">
<title
>Fichiers ignorés</title>

<para
>Dans son arborescence de fichiers principale, &cervisia; n'affiche pas tous les fichiers réellement présents. Celle-ci est similaire à <command
>cvs</command
> proprement dit et permet d'éviter l'encombrement causé par des éléments inintéressants comme les fichiers d'objet. &cervisia; tente d'imiter le comportement de <command
>cvs</command
> d'aussi près que possible. Cela signifie qu'il ignore les listes provenant des sources suivantes : </para>

<itemizedlist>

<listitem
><para
>Une liste statique des éléments comportant des éléments comme <literal role="extension"
>*.o</literal
> et <filename
>core</filename
>. Pour plus de détails, consultez la documentation de &CVS;. </para
></listitem>
<listitem
><para
>Le fichier <filename
><envar
>$HOME</envar
>/.cvsignore</filename
>. </para
></listitem>

<listitem
><para
>La variable d'environnement <envar
>$CVSIGNORE</envar
>. </para
></listitem>
<listitem
><para
>Le fichier <filename
>.cvsignore</filename
> dans le dossier correspondant. </para
></listitem>

</itemizedlist>

<para
><command
>cvs</command
> lui-même consulte en outre les éléments dans <filename
> <envar
>$CVSROOT</envar
>/CVSROOT/cvsignore</filename
>, mais c'est un fichier placé sur le serveur et &cervisia; devrait être capable de démarrer hors connexion. Si vous travaillez avec un groupe qui préfère utiliser une liste d'omission sur le serveur, il serait certainement judicieux d'examiner les modèles qui y sont répertoriés et de les placer dans le fichier <filename
>.cvsignore</filename
> dans votre dossier utilisateur (/home). </para>

</sect1>
   

<sect1 id="information">
<title
>Informations complémentaires et support</title>

<itemizedlist>

<listitem
><para
>&CVS; est livré avec un ensemble de documentation complet sous forme de pages d'infos, appelé <quote
>Le Cederqvist</quote
>. S'il est correctement installé, vous pouvez l'explorer en saisissant <userinput
>info:/cvs</userinput
> dans la barre de saisie de <application
>kdehelp</application
>, <application
>khelp</application
>, respectivement. À l'inverse, vous pouvez simplement choisir <menuchoice
><guimenu
>Aide</guimenu
><guimenuitem
>Infos CVS</guimenuitem
></menuchoice
> dans &cervisia;. Une version HTML en ligne du Cederqvist est disponible <ulink url="http://cvshome.org/docs/manual/cvs.html"
> sur l'Internet</ulink
>. </para>

<para
>Comme ce document est maintenu avec &CVS;, il s'agit normalement de la référence la mieux actualisée. Néanmoins, je recommande de consulter d'autres documentations pour l'apprentissage de l'utilisation de &CVS;, en particulier celles qui suivent. </para
></listitem>

<listitem
><para
>Karl Fogel a écrit l'excellent ouvrage <ulink url="http://cvsbook.red-bean.com/index.html"
>Développement Open Source avec CVS</ulink
>. La moitié environ de ce document traite du processus de développement de logiciels Open Source. L'autre moitié est consacrée à une documentation technique de &CVS;. Heureusement, la partie technique de l'ouvrage a été rendue librement redistribuable sous la GPL, de sorte que vous pouvez en télécharger une version HTML. Une liste d'errata est disponible sur la page Internet mentionnée précédemment. </para
></listitem>

<listitem
><para
>Les problèmes de &CVS; sont abordés sur une <ulink url="http://mail.gnu.org/mailman/listinfo/info-cvs"
>liste de discussion</ulink
> dédiée. </para
></listitem>

<listitem
><para
>Il existe un groupe USENET <literal
>comp.software.config-mgmt</literal
> consacré à la gestion de la configuration en général. &CVS; est un thème assez peu traité dans ce groupe, mais il peut néanmoins être intéressant d'étudier les mérites de divers systèmes de contrôle de révision comparés à &CVS;. </para
></listitem>

<listitem
><para
>Enfin et surtout, il existe une <ulink url="http://lists.sourceforge.net/mailman/listinfo.cervisia-user"
>liste de discussion &cervisia;</ulink
> (faible trafic). </para
></listitem>

</itemizedlist>

</sect1>
   

<sect1 id="commandreference">
<title
>Référence des commandes</title>
      
<!-- File Menu -->
<sect2 id="menufile">

<title
>Le menu Fichier</title>

<variablelist>

<varlistentry>
<term
><menuchoice
><guimenu
>Fichier
></guimenu
><guimenuitem
>Ouvrir...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ouvre une copie locale dans la fenêtre principale. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Récemment ouvert(s)...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ouvre une des copies locales récemment utilisées. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Insérer l'élément ChangeLog...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ouvre l'éditeur ChangeLog, organisé de telle façon que vous puissiez ajouter un nouvel élément comportant la date actuelle. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycombo
><keycap
>&Ctrl;</keycap
><keycap
>U</keycap
></keycombo
></shortcut
><guimenu
>Fichier</guimenu
><guimenuitem
>Mettre à jour</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Exécute <quote
>cvs update</quote
> sur les fichers sélectionnés et change l'état ainsi que les numéros de révision en conséquence dans le listage. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycap
>F5</keycap
></shortcut
> <guimenu
>Fichier</guimenu
><guimenuitem
>État</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Exécute <quote
>cvs -n update</quote
> sur les fichiers sélectionnés et change l'état ainsi que les numéros de révision en conséquence dans le listage. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
> Éditer</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ouvre le fichier sélectionné dans votre éditeur. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Résoudre...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ouvre une boîte de dialogue pour le ficher sélectionné permettant de résoudre les conflits de fusion qu'il présente. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycap
>#</keycap
></shortcut
> <guimenu
>Fichier</guimenu
><guimenuitem
>Valider...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Permet de valider les fichiers sélectionnés. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycap
>+</keycap
></shortcut
> <guimenu
>Fichier</guimenu
><guimenuitem
>Ajouter au référentiel...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Permet d'ajouter les fichiers sélectionnés au référentiel. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Ajouter un binaire...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Permet d'ajouter les fichiers sélectionnés au référentiel sous forme de binaires (<command
>cvs add<option
>-kb</option
></command
>). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycap
>-</keycap
></shortcut
> <guimenu
>Fichier</guimenu
><guimenuitem
>Supprimer du référentiel...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Permet de supprimer les fichiers sélectionnés du référentiel. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Fichier</guimenu
><guimenuitem
>Annuler</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Annule tout changement effectué localement dans les fichiers sélectionnés et revient à la version présente dans le référentiel (option <option
>-C</option
> à <command
>cvs update</command
>). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycombo
><keycap
>&Ctrl;</keycap
><keycap
>Q</keycap
></keycombo
></shortcut
> <guimenu
>Fichier</guimenu
><guimenuitem
>Quitter</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Quitte &cervisia;. </para
></listitem>
</varlistentry>

</variablelist>

</sect2>

<!-- View Menu -->
<sect2 id="menuview">

<title
>Le menu Affichage</title>

<variablelist>

<varlistentry>
<term
><menuchoice
><shortcut
><keycap
>Échap</keycap
></shortcut
> <guimenu
>Affichage</guimenu
><guimenuitem
> Arrêt</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Interrompt tout sous-processus en cours d'exécution. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycombo
><keycap
>&Ctrl;</keycap
><keycap
>L</keycap
></keycombo
></shortcut
> <guimenu
>Affichage</guimenu
><guimenuitem
>Explorer le journal...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Affiche l'arborescence de révision du fichier sélectionné. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycombo
><keycap
>&Ctrl;</keycap
><keycap
>A</keycap
></keycombo
></shortcut
> <guimenu
>View</guimenu
><guimenuitem
>Annoter...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Présente un affichage annoté du fichier sélectionné. Il s'agit d'un affichage montrant la toute dernière modification de chaque auteur. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><shortcut
><keycombo
><keycap
>&Ctrl;</keycap
><keycap
>D</keycap
></keycombo
></shortcut
><guimenu
>View</guimenu
><guimenuitem
>Différence par rapport au référentiel...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Affiche les différences entre le fichier sélectionné dans la copie locale et la révision que vous avez actualisée en dernier lieu (BASE). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Affichage</guimenu
><guimenuitem
>Dernier changement...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Affiche les différences entre la révision du fichier sélectionné que vous avez actualisé en dernier lieu (BASE) et la révision précédente. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Affichage</guimenu
><guimenuitem
>Historique...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Affiche l'historique de &CVS; tel que le serveur le présente. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Affichage</guimenu
><guimenuitem
>Développer l'arborescence de fichiers</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ouvre toutes les branches de l'arborescence des fichiers de façon que vous puissiez voir la totalité des fichiers et des dossiers. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Affichage</guimenu
><guimenuitem
>Réduire l'arborescence des fichiers</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ferme toutes les branches de l'arborescence des fichiers. </para
></listitem>
</varlistentry>

</variablelist>

</sect2>

<!-- Advanced Menu -->
<sect2 id="menuadvanced">

<title
>Le menu Avancé</title>

<variablelist>

<varlistentry>
<term
><menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Marqueur/branche...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Place un marqueur ou une branche sur les fichiers sélectionnés. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Supprimer un marqueur...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Supprime un marqueur donné à partir des fichiers sélectionnés. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Mettre à jour vers le marqueur/à la date...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Positionne les fichiers sélectionnés sur un marqueur ou une date donné(e), le(la) rendant rémanent(e). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Mettre à jour vers HEAD...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Positionne les fichiers sélectionnés sur la révision HEAD respective. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Fusionner...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Fusionne soit une branche donnée, soit les modifications entre deux marqueurs dans les fichiers sélectionnés. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Ajouter une alerte...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ajoute une alerte pour un ensemble d'événements sur les fichiers sélectionnés. </para
></listitem>
</varlistentry>
<varlistentry>
<term
><menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Supprimer une alerte...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Supprime une alerte pour un ensemble d'événements sur les fichiers sélectionnés. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Afficher les surveillances</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Répertorie les surveillances des fichiers sélectionnés. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Éditer</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Exécute <command
>cvs edit</command
> sur les fichiers sélectionnés. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Annuler l'édition</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Exécute <command
>cvs unedit</command
> sur les fichiers sélectionnés. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Afficher les éditeurs</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Exécute <command
>cvs editors</command
> sur les fichiers sélectionnés. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Verrouiller</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Verrouille les fichiers sélectionnés. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Déverrouiller</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Déverrouille les fichiers sélectionnés. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Avancé</guimenu
><guimenuitem
>Créer un correctif par rapport au référentiel...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Crée un correctif à partir des modifications contenues dans votre copie locale. </para
></listitem>
</varlistentry>

</variablelist>

</sect2>

<!-- Repository Menu -->
<sect2 id="menurepository">

<title
>Le menu Référentiel</title>

<variablelist>

<varlistentry>
<term
><menuchoice
><guimenu
>Référentiel</guimenu
><guimenuitem
>Extraire...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ouvre une boîte de dialogue permettant d'extraire un module d'un référentiel. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Référentiel</guimenu
><guimenuitem
>Importer...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ouvre une boîte de dialogue permettant d'importer un paquetage dans le référentiel. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Référentiel</guimenu
><guimenuitem
>Référentiels...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Configure une liste de référentiels fréquemment utilisés et la manière d'accéder à ceux-ci. </para
></listitem>
</varlistentry>

</variablelist>

</sect2>

<!-- Settings Menu -->
<sect2 id="menuoptions">
<title
>Le menu Paramètres</title>

<variablelist>

<varlistentry>
<term
><menuchoice
><guimenu
>Paramètres</guimenu
><guimenuitem
>Configurer les raccourcis...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ouvre une boîte de dialogue pour configurer les raccourcis clavier. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Paramètres</guimenu
><guimenuitem
>Configurer Cervisia...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ouvre une boîte de dialogue pour personnaliser &cervisia;. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Paramètres</guimenu
><guimenuitem
>Créer des dossiers lors de la mise à jour</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Détermine si les mises à jour créent des dossiers qui n'étaient pas présents auparavant dans la copie locale (option <option
>-d</option
> à <command
>cvs update</command
>). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Paramètres</guimenu
><guimenuitem
>Élaguer les dossiers vides lors de la mise à jour</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Détermine si les mises à jour suppriment les dossiers vides dans la copie locale. (option <option
>-P</option
> à <command
>cvs update</command
>). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Paramètres</guimenu
><guimenuitem
>Mettre à jour récursivement</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Détermine si les mises à jour sont récursives (option <option
>-r</option
> à <command
>cvs update</command
>). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Paramètres</guimenu
><guimenuitem
>Valider et supprimer récursivement</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Détermine si les validations et les suppressions sont récursives (option <option
>-r</option
> à <command
>cvs add</command
>, <command
>cvs remove</command
> respectivement). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Paramètres</guimenu
><guimenuitem
>Exécuter "cvs edit" automatiquement si nécessaire</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Détermine si <command
>cvs edit</command
> est exécuté automatiquement lors de chaque édition d'un fichier. </para
></listitem>
</varlistentry>

</variablelist>

</sect2>

<!-- Help -->
<sect2 id="menuhelp">
<title
>Le menu d'aide</title>

<variablelist>

<varlistentry>
<term
><menuchoice
><shortcut
><keycap
>F1</keycap
></shortcut
> <guimenu
>Aide</guimenu
><guimenuitem
>Manuel de Cervisia</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Exécute le système d'aide de KDE démarrant les pages d'aide de &cervisia; (ce document). </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Aide</guimenu
><guimenuitem
>Signaler le bogue...</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ouvre la boîte de dialogue de rapport de bogue. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Aide</guimenu
> <guimenuitem
>À propos de &cervisia;</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ceci affiche les informations sur la version et l'auteur. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Aide</guimenu
><guimenuitem
>À propos de KDE</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ceci affiche la version de KDE et d'autres informations générales. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><menuchoice
><guimenu
>Aide</guimenu
><guimenuitem
>Manuel de CVS</guimenuitem
> </menuchoice
></term>
<listitem
><para
>Ouvre les pages d'infos de &CVS; dans le Centre d'aide de KDE. </para
></listitem>
</varlistentry>

</variablelist>

</sect2>

</sect1>

</chapter>


<chapter id="credits-and-licenses">
<title
>Remerciements et licences</title>
&underFDL; </chapter>
</book>
