Previous Next Contents

4. Identification automatique

Avec RCS, vous pouvez marquer vos fichiers sources et objets par des chaines d'identification spéciales. RCS utilise pour ça la substitution de mots-clés. Par exemple, pour obtenir l'identification, placez le mot-clé suivant dans le texte d'une révision (par exemple dans un commentaire en C): $Id: rcs-4.html 12671 2007-05-01 22:23:59Z seb $.

La commande co remplacera ce mot-clé avec une chaine de la forme : $Id filename revisionnumber date time author state locker$. Cette chaine décrit le nom du fichier, la révision, la date et l'heure du check-out, l'auteur, l'état (par exemple, Exp pour expérimental) et celui qui verrouille le fichier. Cette chaine sera mise à jour automatiquement à chaque fois.

Pour obtenir la même chose dans les fichiers objets, utilisez une chaine littérale de caractères, par exemple en C :

static char rcsid[]="$Id: rcs-4.html 12671 2007-05-01 22:23:59Z seb $";

Cette possibilité est très importante pour la maintenance des programmes. Ainsi, la commande ident extrait ces mots-clés à partir de n'importe quel fichier (donc les fichiers objets). Cela permet de retrouver quelles révisions de quels modules ont été utilisées pour construire le programme.

Il existe d'autres mots-clés d'identification ($Author: seb $, $Date: 2007-05-02 00:23:59 +0200 (mer, 02 mai 2007) $, $Header$, $Locker$ ,$Name$ ,$RCSfile$, $Revision: 12671 $, $Source$, $State$, voir la page de manuel de co). Un mot-clé important est $Log$ Revision 1.1 1999/08/18 21:06:08 cvs Initial revision Revision 1.1.1.1 1999/07/27 10:53:43 http Web APRIL importe Revision 1.1.1.1 1999/07/26 21:06:01 cvs Arborescence du serveur Web d'APRIL. Revision 1.1.1.1 1999/07/24 16:16:59 cvs Creation du master pour le Web . Son fonctionnement est un peu différent, il permet d'accumuler les messages du journal saisis lors du processus de check-in. On utilise ce mot-clé dans un commentaire en début de fichier source. Ainsi le fichier source est auto-documenté.

Prenons un exemple concret, voilà le début du fichier foo.c lors de sa création :

/*
 * $Id: rcs-4.html 12671 2007-05-01 22:23:59Z seb $
 *
 * $Log$
 * Revision 1.1  1999/08/18 21:06:08  cvs
 * Initial revision
 *
 * Revision 1.1.1.1  1999/07/27 10:53:43  http
 * Web APRIL importe
 *
 * Revision 1.1.1.1  1999/07/26 21:06:01  cvs
 * Arborescence du serveur Web d'APRIL.
 *
 * Revision 1.1.1.1  1999/07/24 16:16:59  cvs
 * Creation du master pour le Web
 *
 *
 */

static char rcsid[] = "$Id: rcs-4.html 12671 2007-05-01 22:23:59Z seb $";

Lorsque nous extrayons la révision 1.2, nous obtenons en début du fichier foo.c :

/*
 * $Id: rcs-4.html 12671 2007-05-01 22:23:59Z seb $
 *
 * $Log$
 * Revision 1.1  1999/08/18 21:06:08  cvs
 * Initial revision
 *
 * Revision 1.1.1.1  1999/07/27 10:53:43  http
 * Web APRIL importe
 *
 * Revision 1.1.1.1  1999/07/26 21:06:01  cvs
 * Arborescence du serveur Web d'APRIL.
 *
 * Revision 1.1.1.1  1999/07/24 16:16:59  cvs
 * Creation du master pour le Web
 *
 * Revision 1.2  1997/08/23 20:33:36  mad
 * Affichage 10 fois du message
 *
 * Revision 1.1  1997/08/23 20:33:05  mad
 * Initial revision
 *
 *
 */

static char rcsid[] = "$Id: rcs-4.html 12671 2007-05-01 22:23:59Z seb $";

Si nous compilons foo.c pour obtenir a.out, et que nous utilisons la commande :

ident a.out

nous obtenons :

a.out: $Id: rcs-4.html 12671 2007-05-01 22:23:59Z seb $

Ce qui nous permet de savoir que le fichier a.out a été obtenu à partir de la révision 1.2 de foo.c.


Previous Next Contents