Le MINI-HOWTO RCS Robert Kiesling Traduction Jean-Albert Ferrez, V1.4 1997/08/14 Ce document couvre les bases de l'installation et de l'utilisation de RCS, le systeme de controle de revisions (_R_e_v_i_s_i_o_n _C_o_n_t_r_o_l _S_y_s_t_e_m) de GNU, sous Linux. Il couvre egalement l'installation des utilitaires diff(1) et diff3(1) qui sont necessaires au fonctionnement de RCS. Ce document peut etre reproduit librement, dans sa totalite ou en partie, pour autant que tout usage de ce document soit conforme a la notice generale sur le copyright de la serie des Howto du _L_i_n_u_x _D_o_c_u_m_e_n_t_a_t_i_o_n _P_r_o_j_e_c_t. Referez-vous au fichier COPYRIGHT pour plus de details. Envoyez toute plainte, suggestion, correction et autre a kiesling@ter- racom.net, pour que je puisse maintenir ce document aussi complet et a jour que possible. 11.. VVuuee dd''eennsseemmbbllee ddee RRCCSS.. RCS, le systeme de controle de revisions, est un ensemble de programmes qui suivent les changements dans des fichiers textes et controlent les acces concurrents dans le cadre d'un travail collectif. Il est generalement utilise pour maintenir des collections de codes sources. Il est egalement adapte au suivi des fichiers de documentation. RCS a ete ecrit par Walter F. Tichy et Paul Eggert. La derniere version ayant ete portee sous Linux est la 5.7. Il existe egalement une version semi officielle multitache (_t_h_r_e_a_d_e_d). La plupart des informations de ce Howto proviennent des pages de manuel de RCS. RCS comprend le programme rcs(1) qui controle les attributs de l'archive RCS, ci(1) et co(1), qui enregistrent un fichier dans l'archive (_c_h_e_c_k _i_n) et extraient des fichiers de l'archive (_c_h_e_c_k _o_u_t), ident(1), qui recherche un mot-cle dans une archive RCS, rcsclean(1), qui fait le menage en eliminant les fichiers inchanges et sur lesquels personne ne travaille, rcsdiff(1), qui execute diff(1) pour comparer les revisions, rcsmerge(1), qui fusionne deux branches de developpement en un seul fichier, et rlog(1), qui affiche l'historique des modifications. Les fichiers archives avec RCS peuvent etre du texte d'un format quelconque, ou des fichiers binaires si le diff utilise pour generer les changements supporte les donnees sur 8 bits. Les fichiers peuvent contenir un texte de description pour faciliter le suivi par ident. RCS utilise les programmes diff(1) and diff3(1) pour generer les modifications entre les diverses revisions. Une archive RCS consiste en la revision initiale - la version 1.1 - et une serie de modifications, une pour chaque revision. Chaque fois qu'un fichier est extrait de l'archive a l'aide de co(1), edite, puis a nouveau enregistre dans l'archive avec ci(1), le numero de version est incremente, par exemple 1.2, 1.3, 1.4, etc. pour les revisions successives. Les fichiers archives eux-memes se trouvent generalement dans un sous- repertoire ./RCS, bien que RCS ait d'autres options pour le stockage des archives. Pour une vue d'ensemble de RCS, voyez egalement la page de manuel de rcsintro(1). 22.. PPrreerreeqquuiiss RCS a besoin de diff(1) et de diff3(1) pour generer les modifications entre les revisions. La suite d'utilitaires diff doit etre installee sur votre systeme; RCS s'assure de sa presence lors de l'installation. Des binaires pre-compiles des diffutils sont disponibles a l'adresse : ftp://sunsite.unc.edu/pub/Linux/utils/text/diffutils-2.6.bin.ELF.tar.gz ainsi que sur les sites miroirs. Si vous devez les compiler, les sources se trouvent a : ftp://prep.ai.mit.edu/pub/gnu/diffutils-2.7.tar.gz ainsi que sur les sites miroirs. NdT: En France, on trouve les diffutils sur ftp.lip6.fr aux adresses suivantes : 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 Les librairies ELF doivent egalement etre installees sur votre systeme pour utiliser les binaires pre-compiles. Reportez-vous au ELF-Howto pour plus de details. 33.. CCoommppiilleerr RRCCSS Procurez-vous les sources de RCS version 5.7, disponibles a : ftp://sunsite.unc.edu/pub/Linux/devel/vc/rcs-5.7.src.tar.gz ainsi que sur les sites miroirs, en France a : ftp://ftp.lip6.fr/pub/linux/sunsite/devel/vc/rcs-5.7.src.tar.gz Apres avoir extrait l'archive, il faut configurer RCS pour votre systeme. Ceci se fait a l'aide du script configure dans le repertoire source, qu'il faut executer en premier. Ceci va generer une Makefile ainsi que le conf.sh approprie pour votre systeme. Vous pouvez ensuite faire make install ce qui va creer les binaires. Vous devrez peut-etre devenir root a un certain moment pour installer les binaires dans les bons repertoires. 44.. CCrreeeerr eett mmaaiinntteenniirr ddeess aarrcchhiivveess Le programme rcs(1) s'occupe de creer des archives et de modifier leurs attributs. Les options de rcs(1) sont donnees dans la page de manuel rcs(1). La maniere la plus facile de creer une archive est d'executer mkdir RCS dans le repertoire courant, puis d'initialiser l'archive avec la commande rcs -i nom_du_fichier_de_travail Ceci va creer une archive nommee ./RCS/nom_du_fichier_de_travail,v et reclamer un texte decrivant l'archive, mais ne depose aucune revision dans l'archive. Vous pouvez enclencher et declencher le blocage strict avec les commandes rcs -L nom_du_fichier_de_travail et rcs -U nom_du_fichier_de_travail respectivement. Il y a d'autres options pour controler l'acces a l'archive, fixer son format et ses numeros de revisions; tout est explique dans la page de manuel rcs(1). 55.. ccii((11)) et co(1). ci(1) et co(1) sont les commandes utilisees pour enregistrer un fichier dans son archive et l'en extraire. La commande ci(1) peut egalement etre utilisee pour les deux operations. Dans leur forme la plus simple, ci(1) and co(1) ne necessitent que le nom du fichier de travail. ci nom_du_fichier_de_travail et co nom_du_fichier_de_travail La forme suivante ci -l nom_du_fichier_de_travail enregistre le ficher en mode bloque, et co -l nom_du_fichier_de_travail _e_s_t _e_x_e_c_u_t_e _a_u_t_o_m_a_t_i_q_u_e_m_e_n_t_. C'est-a-dire, ci -l extrait a nouveau le fichier et le bloque. ci -u nom_du_fichier_de_travail enregistre le fichier dans l'archive et l'extrait a nouveau sans le bloquer. Dans tous les cas, l'utilisateur se voit demander un message pour l'historique. ci(1) cree automatiquement une archive RCS si elle n'existe pas deja. Si vous ne specifiez pas de numero de revision, ci(1) incremente le dernier numero present dans l'archive et y ajoute la version actuelle. Si vous specifiez un numero de revision dans une branche existante, il doit etre superieur aux numeros existants. ci(1) cree une nouvelle branche si vous specifiez un numero dans une branche qui n'existe pas. Referez-vous a la page de manuel de ci(1) et co(1) pour plus de details. ci(1) et co(1) ont de nombreuses options, en mode interactif ou non. De nouveau, referez-vous aux pages de manuel de ci(1) et co(1) pour plus de details. 66.. HHiissttoorriiqquuee ddeess rreevviissiioonnss La commande rlog(1) donne des informations sur une archive ainsi que les commentaires associes a chacune des revisions qu'elle contient. Par exemple : rlog nom_du_fichier_de_travail va afficher la liste des revisions du fichier, avec pour chacune la date, le userid de l'auteur et la personne qui a bloque le fichier. Vous pouvez specifier les attributs que vous desirez voir. 77.. IInncclluurree ddeess ddoonnnneeeess RRCCSS ddaannss lleess ffiicchhiieerrss co(1) tient a jour une liste de mots-cles de l'archive RCS lorsque le fichier de travail est extrait. Le mot-cle $Id$ dans un document sera remplace par une chaine contenant le nom du fichier, le numero de revision, la date d'extraction, l'auteur, l'etat de l'archive et, le cas echeant, la personne qui a bloque le fichier. Le mot cle $Log$ est lui remplace par l'historique du fichier. Ces mots-cles ainsi que d'autres peuvent etre utilises comme cles de recherche dans une archive RCS. Referez-vous a la page de manuel de ident(1) pour plus de details. 88.. RRCCSS eett llee ccoonnttrroollee ddee vveerrssiioonnss ddaannss eemmaaccss((11)) Le controle de versions dans emacs(1) fonctionne comme une interface a RCS. Ce qui suit s'applique a la version 19.34 de GNU Emacs qui est livree avec la majorite des distributions Linux. Si l'on edite dans emacs(1) un fichier qui est sous le controle de RCS, la commande vc- toggle-read-only (associee par defaut a C-x C-q) va enregistrer le fichier dans le systeme de controle de version d'emacs, puis dans RCS. emacs ouvre un tampon (_b_u_f_f_e_r) dans lequel il est possible de saisir un message pour l'historique. Une fois ce message saisi, C-c C-c termine l'edition et procede a l'enregistrement de la nouvelle revision dans l'archive RCS. Si vous avez opte pour un blocage strict, vous devez bloquer a nouveau le fichier pour l'editer dans emacs(1). Vous pouvez extraire le fichier a l'aide de la commande % dans le mode _b_u_f_f_e_r_-_m_e_n_u. Pour plus d'informations, consultez le manuel de GNU Emacs ainsi que les pages info. .