Vous êtes ici : Accueil / TECHNICAL PAGES / Archives / Utilisation de RCS pour le contrôle des versions des procédures

Utilisation de RCS pour le contrôle des versions des procédures

Mémo pour RCS

 

Le mode d'emploi de RCS (Revision Control System) s'obtient avec "man rcsintro" et "man rcs"

RCS permet la gestion des versions de logiciels (numérotation) ainsi que la réservation (lock) de fichiers en vue de modification. Il facilite aussi la mise en place d'un historique des modification et la récupération de précente versions.

Voici un petit guide pour l'emploi de RCS. Ce guide est adapté aux cas des procédures Inter dans l'environnement de dévellopement T4.

| Guide rapide                                                                 |
| ------------                                                                 |
|                                                                              |
| Initialiser RCS:                      mkdir RCS ; chmod g+w RCS              |
| Standardiser le header de procédure:  voir plus bas ($Id$ et $Log$)          |
| Initialiser une procédure dans RCS:   rcs -i -A<procédure_ref> <procédure> ; |
|                                       ci -u <procédure>                      |
|                                                                              |
| Avant de modifier une procédure:      co -l <procédure>                      |
| Pour figer une procédure:             ci -u <procédure>                      |
|                                                                              |
| Récupérer une révision particulière:  co -l<rev> <procédure>                 |
| Différence entre deux révision:       rcsdiff [-r<rev>] [-r<rev>] <procédure>|
|                                                                              |
| Supprimer une procédure:              rm <procédure> RCS/<procédure>,v       |

 

Chaque directory de procédure doit posséder un directory nommé RCS dans lequel sont sauvegardés les informations relatives aux versions des procédures gérées par RCS.

Pour tout nouveau directory de procédures, on crée ce directory avec les commandes:

        mkdir RCS
        chmod g+w RCS

 

L'opération de base consiste à initialiser la procédure dans la structure RCS. On indique notament la liste des utilisateurs qui ont l'autorisation de modifier le fichier. On le fait avec la commande:

        rcs -i -a<utilisateur_a>[,<utilisateur_b>...] <procédure>

 

On peut également récupérer les listes des utilisateurs autorisés à partir d'une procédure existante pour laquelle sa liste est adaptée.

        rcs -i -A<procédure_ref> <procédure>

 

Cette commande demande une description du fichier à entrer au clavier. Si cette description est courte, on peut la donner avec l'option "-t-". Ex:

        rcs -i -A<procédure_ref> -t-"<description>" <procédure>

 

Pour une procédure qui possède son commentaire en première ligne, on peut taper:

        rcs -i -A<procédure_ref> -t-"`head -1 <procédure>`" <procédure>

 

Une fois la procédure initialisée, on place la procédure dans la structure avec la commande "ci". Cette commande initialise la version 1.1:

        ci -u <procédure>

 

Pour passer toutes les procédures d'un directory sous RCS, on fait (exemple):

        mkdir RCS ; chmod g+w RCS
        foreach i ( *.prc )
                echo $i
                rcs -i -ablecha,davignon,maire,queloz,russinie,weber -t-"`head -1 $i`" $i
                ci  -u $i
        end

 

Une fois une procédure initialisée dans RCS, son mode d'acces passe en read-only, et il est dès lors obligatoire de passer par les commandes RCS pour la modifier.

Les modifications de procédures gérées par RSC se font entre le moment où on retire une version depuis RCS avec la commande "co" (checkout, voir "man co") et le moment où on la replace dans RCS avec la commande "ci" (checkin, voir "man ci").

Dans notre cas, nous n'utilisons pas le mode de travaille standard de RCS, car il faut que le fichier existe en permanence dans le directory de procédure. En effet, RCS en standard stocke et destocke le fichier dans le directory RCS et ne laisse aucune trace du fichier dans le directory courant.

La procédure existe donc dans le directory de procédure en permanence et appartient à la dernière personne qui a effectué un "checkout". La première opération à effectuer si on veut faire une modification sera de s'approprier ce fichier avec un "checkout". Le "checkout" prend la dernière version de la procédure (depuis la base), autorise l'écriture et la "lock" à votre nom. La commande est:

        co -l <procédure>

 

Si la procédure est "lockée" par un autre utilisateur (un utilisateur qui n'a pas effectué de "checkin"), vous ne pourrez pas l'extraire, ni donc bien sûr l'éditer.

Si vous êtes le seul à modifier cette procédure, vous pouver rester dans cet état le temps qu'il vous plait. Dès que la procédure est dans un état qui justifie de lui donner un numéro de version, il faut effectuer un "checkin" et relacher ou non le "lock". Si vous relachez le "lock", un autre développeur pourra mofifier la procédure, sinon, non! Le "checkin" se fait des manières suivantes:

        ci -l <procédure>   (sauve une nouvelle version et conserve le lock)
        ci -u <procédure>   (sauve une nouvelle version et relache le lock)

 

Le "checkin" vous questionne sur un commentaire à apporter à la version de la procédure.

L'historique des modifications, ainsi que la présence d'un "lock" est affichée avec la commande:

        rlog <procédure>

 

On récupère une version donnée avec la commande:

        co -l<version> <procédure>

 

Exemple:

        co -l1.2 acquisition.prc

 

Si on effectue un "checkin" sur une ancienne révision, on crée un nouvelle branche de dévellopement. Ex: 1.2.1

Une procédure "lockée" peut être "delockée" si besoin avec la commande

        rcs -u <procédure>

 

Le numéro de revision avec d'autres information est inclus automatiquement à chaque "checkout" si le fichier contient le texte $Id$. L'historique des revisions est inclus automatiquement à chaque "checkout" si le fichier contient le texte $Log$.

L'entête d'une procédure Inter peut être écrite de la sorte (exemple):

        ! procedure de test
        !
        ! NIVEAU: 1
        ! EXECUTABLE PAR: CCD
        ! STATUT: OK (AB)
        ! VERSION: $Id$
        ! HISTORY:
        !       $Log$

 

Et RCS la remplit ainsi (exemple):

        ! procedure de test
        !
        ! NIVEAU: 1
        ! EXECUTABLE PAR: CCD
        ! STATUT: OK (AB)
        ! VERSION: $Id: qq.prc,v 1.8 1998/12/10 14:15:22 weber Exp weber $
        ! HISTORY:
        !       $Log: qq.prc,v $
        !       Revision 1.8  1998/12/10 14:15:22  weber
        !       enleve le stop
        !
        !       Revision 1.7  1998/12/10 14:15:01  weber
        !       nouvel header

 

faire les mans de:

  • rlog
  • ident
  • rcsdiff
  • rcsmerge

 

     A catastrophe (e.g. a system crash) can cause RCS  to  leave
     behind a semaphore file that causes later invocations of RCS
     to claim that the RCS file is in use.  To fix  this,  remove
     the  semaphore  file.   A  semaphore  file's  name typically
     begins with , or ends with _.