La commande rcsdiff permet de comparer la version actuelle avec la plus récente version qui est sauvegardée :
rcsdiff -u foo.c
L'option -u
de rcsdiff
permet d'utiliser un diff
unifié (unified diff). En fait, rcsdiff
accepte
toutes les options que la commande diff
accepte. Par exemple,
pour générer un context diff, on utilisera l'option
-c
.
Par exemple, nous extrayons la révision 1.2 de foo.c, nous effectuons
une petite modification (correction d'un bug), et rcsdiff
foo.c
nous donne:
===================================================================
RCS file: foo.c,v
retrieving revision 1.2
diff -u -r1.2 foo.c
--- foo.c 1997/08/23 20:33:36 1.2
+++ foo.c 1997/08/24 20:36:20
@@ -24,7 +24,7 @@
main()
{
int i = 0;
- for(i = 0; i <= 10; i++)
+ for(i = 0; i < 10; i++)
printf("Hello world\n");
}
Les lignes qui n'ont pas été modifiées sont affichées avec une simple
espace en début de ligne. Les lignes effacées dans la version la plus
récente ont un -
en début de ligne, et les lignes qui ont été
ajoutées ont un +
en début de ligne. Comme on peut le
remarquer, les lignes modifiées sont considérées comme effacées dans
l'ancienne version, et les changements sont considérés comme ajoutés
dans la nouvelle. Dans le cas d'un context diff, les lignes
marquées avec un !
indiquent un changement, et les lignes
marquées avec un +
indiquent des lignes ajoutées.
On peut également comparer deux versions :
rcsdiff -u -r1.2 -r1.4 foo.c
Une utilisation de rcsdiff
est la génération de mises à jour
appliquées par des patch. Par exemple, une fois un programme
terminé, effectuez un check-in sur tous les fichiers avec un
nouveau numéro de release, par exemple 2.0. Puis, pour la release
suivante (par exemple la 3.0), lancez rcsdiff
sur la révision
2.0 pour tous les fichiers :
rcsdiff -c -r2.0 RCS/* > monprog-3.0.patch 2>&1
Vous obtiendrez ainsi un fichier patch que vous pourrez distribuer aux personnes possédant la version 2.0.
Une autre possibilité intéressante est de consulter le journal des
modifications effectuées. Pour cela on utilise la commande
rlog
, qui donne l'historique des changements effectués :
rlog foo.c
Ce qui nous donne :
RCS file: foo.c,v
Working file: foo.c
head: 1.3
branch:
locks: strict
mad: 1.3
access list:
symbolic names:
keyword substitution: kv
total revisions: 3; selected revisions: 3
description:
programme hello world
----------------------------
revision 1.3
date: 1997/08/23 20:36:20; author: mad; state: Exp; lines: +6 -1
Correction d'un petit bug
----------------------------
revision 1.2
date: 1997/08/23 20:33:36; author: mad; state: Exp; lines: +8 -3
Affichage 10 fois du message
----------------------------
revision 1.1
date: 1997/08/23 20:33:05; author: mad; state: Exp;
Initial revision
=============================================================================
Le plus intéressant ce sont les commentaires saisis lors d'un
ci
. Par exemple, on peut noter que pour la révision 1.3, le
commentaire est Correction d'un petit bug.
A noter que les dates et heures sont en UTC, et non pas dans la zone locale. Cela permet à des développeurs de différentes zones géographiques de pouvoir collaborer.
La commande rcs
est utilisée pour modifier l'état des
fichiers RCS. Par exemple, pour bloquer un fichier qui ne l'est pas ou
pour casser un verrou.