<!DOCTYPE LINUXDOC SYSTEM>
<article>

<title> Le MINI-HOWTO RCS
<author> Robert Kiesling <newline>
Traduction Jean-Albert Ferrez, &lt;Jean-Albert.Ferrez&commat;epfl.ch&gt;

<date>V1.4 1997/08/14

<abstract>
Ce document couvre les bases de l'installation et de l'utilisation de RCS,
le système de contrôle de révisions (<em/Revision Control System/) de GNU,
sous Linux. Il couvre également l'installation des utilitaires <tt/diff(1)/
et <tt/diff3(1)/ qui sont nécessaires au fonctionnement de RCS. Ce document
peut être reproduit librement, dans sa totalité ou en partie, pour autant
que tout usage de ce document soit conforme à la notice générale sur le
copyright de la série des Howto du <em/Linux Documentation
Project/. Référez-vous au fichier COPYRIGHT pour plus de détails. Envoyez
toute plainte, suggestion, correction et autre à <htmlurl
url="mailto:kiesling&commat;terracom.net" name =
"kiesling&commat;terracom.net">, pour que je puisse maintenir ce document
aussi complet et à jour que possible.
</abstract>

<toc>

<sect>Vue d'ensemble de RCS.
<P>
RCS, le système de contrôle de révisions, est un ensemble de programmes qui
suivent les changements dans des fichiers textes et contrôlent les accès
concurrents dans le cadre d'un travail collectif. Il est généralement
utilisé pour maintenir des collections de codes sources. Il est également
adapté au suivi des fichiers de documentation.

RCS a été écrit par Walter F. Tichy et Paul Eggert. La dernière version
ayant été portée sous Linux est la 5.7. Il existe également une version
semi officielle multitâche (<em/threaded/). La plupart des informations de
ce Howto proviennent des pages de manuel de RCS.

RCS comprend le programme <tt/rcs(1)/ qui contrôle les attributs de
l'archive RCS, <tt/ci(1)/ et <tt/co(1)/, qui enregistrent un fichier dans
l'archive (<em/check in/) et extraient des fichiers de l'archive (<em/check
out/), <tt/ident(1)/, qui recherche un mot-clé dans une archive RCS,
<tt/rcsclean(1)/, qui fait le ménage en éliminant les fichiers inchangés et
sur lesquels personne ne travaille, <tt/rcsdiff(1)/, qui exécute
<tt/diff(1)/ pour comparer les révisions, <tt/rcsmerge(1)/, qui fusionne
deux branches de développement en un seul fichier, et <tt/rlog(1)/, qui
affiche l'historique des modifications.

Les fichiers archivés avec RCS peuvent être du texte d'un format
quelconque, ou des fichiers binaires si le <tt/diff/ utilisé pour générer
les changements supporte les données sur 8 bits. Les fichiers peuvent
contenir un texte de description pour faciliter le suivi par <tt/ident/.
RCS utilise les programmes <tt/diff(1)/ and <tt/diff3(1)/ pour générer les
modifications entre les diverses révisions. Une archive RCS consiste en la
révision initiale - la version 1.1 - et une série de modifications, une
pour chaque révision. Chaque fois qu'un fichier est extrait de l'archive à
l'aide de <tt/co(1)/, édité, puis à nouveau enregistré dans l'archive avec
<tt/ci(1)/, le numéro de version est incrémenté, par exemple 1.2, 1.3, 1.4,
etc. pour les révisions successives.

Les fichiers archives eux-mêmes se trouvent généralement dans un
sous-répertoire <tt>./RCS</tt>, bien que RCS ait d'autres options pour le
stockage des archives.

Pour une vue d'ensemble de RCS, voyez également la page de manuel de <tt/rcsintro(1)/.


<sect>Prérequis
<P>
RCS a besoin de <tt/diff(1)/ et de <tt/diff3(1)/ pour générer les
modifications entre les révisions. La suite d'utilitaires diff doit être
installée sur votre système; RCS s'assure de sa présence lors de
l'installation.

Des binaires pré-compilés des diffutils sont disponibles à l'adresse&nbsp;:
<verb>
ftp://sunsite.unc.edu/pub/Linux/utils/text/diffutils-2.6.bin.ELF.tar.gz
</verb>
ainsi que sur les sites miroirs. Si vous devez les compiler, les sources
se trouvent à&nbsp;:
<verb>
ftp://prep.ai.mit.edu/pub/gnu/diffutils-2.7.tar.gz
</verb>
ainsi que sur les sites miroirs.

NdT: En France, on trouve les diffutils sur <tt/ftp.lip6.fr/ aux adresses
suivantes&nbsp;:
<verb>
ftp://ftp.lip6.fr/pub/linux/sunsite/utils/text/diffutils-2.6.bin.ELF.tar.gz
ftp://ftp.lip6.fr/pub/gnu/diffutils-2.7.tar.gz
</verb>

Les librairies ELF doivent également être installées sur votre système pour
utiliser les binaires pré-compilés. Reportez-vous au ELF-Howto pour plus de
détails.


<sect>Compiler RCS
<P>
Procurez-vous les sources de RCS version 5.7, disponibles à&nbsp;:
<verb>
ftp://sunsite.unc.edu/pub/Linux/devel/vc/rcs-5.7.src.tar.gz
</verb>
ainsi que sur les sites miroirs, en France à&nbsp;:
<verb>
ftp://ftp.lip6.fr/pub/linux/sunsite/devel/vc/rcs-5.7.src.tar.gz
</verb>

Après avoir extrait l'archive, il faut configurer RCS pour votre
système. Ceci se fait à l'aide du script <tt/configure/ dans le répertoire
source, qu'il faut exécuter en premier. Ceci va générer une <tt/Makefile/
ainsi que le <tt/conf.sh/ approprié pour votre système. Vous pouvez ensuite
faire 
<verb>
make install
</verb>
ce qui va créer les binaires. Vous devrez peut-être devenir root à un
certain moment pour installer les binaires dans les bons répertoires.


<sect>Créer et maintenir des archives
<P>
Le programme <tt/rcs(1)/ s'occupe de créer des archives et de modifier
leurs attributs. Les options de <tt/rcs(1)/ sont données dans la page de
manuel <tt/rcs(1)/.

La manière la plus facile de créer une archive est d'exécuter <tt/mkdir
RCS/ dans le répertoire courant, puis d'initialiser l'archive avec la
commande
<verb>
rcs -i nom_du_fichier_de_travail
</verb>
Ceci va créer une archive nommée <tt>./RCS/nom_du_fichier_de_travail,v</tt>
et réclamer un texte décrivant l'archive, mais ne dépose aucune révision
dans l'archive. Vous pouvez enclencher et déclencher le blocage strict avec
les commandes
<verb>
rcs -L nom_du_fichier_de_travail
</verb>
et
<verb>
rcs -U nom_du_fichier_de_travail
</verb>
respectivement. Il y a d'autres options pour contrôler l'accès à l'archive,
fixer son format et ses numéros de révisions; tout est expliqué dans la
page de manuel <tt/rcs(1)/.


<sect><tt/ci(1)/ et <tt/co(1)/.
<P>
<tt/ci(1)/ et <tt/co(1)/ sont les commandes utilisées pour enregistrer un
fichier dans son archive et l'en extraire. La commande <tt/ci(1)/
peut également être utilisée pour les deux opérations. Dans leur forme la
plus simple, <tt/ci(1)/ and <tt/co(1)/ ne nécessitent que le nom du fichier
de travail.
<verb>
ci nom_du_fichier_de_travail
</verb>
et
<verb>
co nom_du_fichier_de_travail
</verb>
La forme suivante
<verb>
ci -l nom_du_fichier_de_travail
</verb>
enregistre le ficher en mode bloqué, et
<verb>
co -l nom_du_fichier_de_travail
</verb>
<em>est exécuté automatiquement.</em> C'est-à-dire, <tt/ci -l/ extrait à
nouveau le fichier et le bloque.
<verb>
ci -u nom_du_fichier_de_travail
</verb>
enregistre le fichier dans l'archive et l'extrait à nouveau sans le bloquer.
Dans tous les cas, l'utilisateur se voit demander un message pour
l'historique.

<tt/ci(1)/ crée automatiquement une archive RCS si elle n'existe pas déjà.

Si vous ne spécifiez pas de numéro de révision, <tt/ci(1)/ incrémente le
dernier numéro présent dans l'archive et y ajoute la version actuelle. Si
vous spécifiez un numéro de révision dans une branche existante, il doit
être supérieur aux numéros existants. <tt/ci(1)/ crée une nouvelle branche
si vous spécifiez un numéro dans une branche qui n'existe pas. Référez-vous
à la page de manuel de <tt/ci(1)/ et <tt/co(1)/ pour plus de détails.

<tt/ci(1)/ et <tt/co(1)/ ont de nombreuses options, en mode interactif ou
non. De nouveau, référez-vous aux pages de manuel de <tt/ci(1)/ et <tt/co(1)/ pour plus de détails.


<sect>Historique des révisions
<P>
La commande <tt/rlog(1)/ donne des informations sur une archive ainsi que
les commentaires associés à chacune des révisions qu'elle contient. Par
exemple&nbsp;: 
<verb>
rlog nom_du_fichier_de_travail
</verb>
va afficher la liste des révisions du fichier, avec pour chacune la date,
le <tt/userid/ de l'auteur et la personne qui a bloqué le fichier. Vous
pouvez spécifier les attributs que vous désirez voir.


<sect>Inclure des données RCS dans les fichiers
<P>
<tt/co(1)/ tient à jour une liste de mots-clés de l'archive RCS lorsque le
fichier de travail est extrait. Le mot-clé <tt/&dollar;Id&dollar;/ dans un
document sera remplacé par une chaîne contenant le nom du fichier, le
numéro de révision, la date d'extraction, l'auteur, l'état de l'archive et,
le cas échéant, la personne qui a bloqué le fichier. Le mot clé
<tt/&dollar;Log&dollar;/ est lui remplacé par l'historique du fichier.

Ces mots-clés ainsi que d'autres peuvent être utilisés comme clés de
recherche dans une archive RCS. Référez-vous à la page de manuel de
<tt/ident(1)/ pour plus de détails.

<sect>RCS et le contrôle de versions dans <tt/emacs(1)/
<P>
Le contrôle de versions dans <tt/emacs(1)/ fonctionne comme une interface à
RCS. Ce qui suit s'applique à la version 19.34 de GNU Emacs qui est livrée
avec la majorité des distributions Linux. Si l'on édite dans <tt/emacs(1)/
un fichier qui est sous le contrôle de RCS, la commande
<tt/vc-toggle-read-only/ (associée par défaut à <tt/C-x C-q/) va
enregistrer le fichier dans le système de contrôle de version d'emacs, puis
dans RCS. emacs ouvre un tampon (<em/buffer/) dans lequel il est possible
de saisir un message pour l'historique. Une fois ce message saisi, <tt/C-c
C-c/ termine l'édition et procède à l'enregistrement de la nouvelle
révision dans l'archive RCS.

Si vous avez opté pour un blocage strict, vous devez bloquer à nouveau le
fichier pour l'éditer dans <tt/emacs(1)/. Vous pouvez extraire le fichier
à l'aide de la commande <tt/&percnt;/ dans le mode <em/buffer-menu/.

Pour plus d'informations, consultez le manuel de GNU Emacs ainsi que les
pages info.

</article>
