SVN - Réviser les modifications

Jerry a déjà ajouté le fichier array.c au référentiel. Tom vérifie également le dernier code et commence à travailler.

[[email protected] ~]$ svn co http://svn.server.com/svn/project_repo --username=tom

La commande ci-dessus produira le résultat suivant.

A    project_repo/trunk
A    project_repo/trunk/array.c
A    project_repo/branches
A    project_repo/tags
Checked out revision 2.

Mais, il a constaté que quelqu'un avait déjà ajouté le code. Il est donc curieux de savoir qui a fait cela et il vérifie le message du journal pour voir plus de détails à l'aide de la commande suivante:

[[email protected] trunk]$ svn log

La commande ci-dessus produira le résultat suivant.

------------------------------------------------------------------------
r2 | jerry | 2013-08-17 20:40:43 +0530 (Sat, 17 Aug 2013) | 1 line

Initial commit
------------------------------------------------------------------------
r1 | jerry | 2013-08-04 23:43:08 +0530 (Sun, 04 Aug 2013) | 1 line

Create trunk, branches, tags directory structure
------------------------------------------------------------------------

Lorsque Tom observe le code de Jerry , il remarque immédiatement un bug là-dedans. Jerry ne recherchait pas de débordement de tableau, ce qui pouvait causer de sérieux problèmes. Alors Tom décide de résoudre ce problème. Après modification, array.c ressemblera à ceci.

#include <stdio.h>

#define MAX 16

int main(void)
{
   int i, n, arr[MAX];

   printf("Enter the total number of elements: ");
   scanf("%d", &n);

   /* handle array overflow condition */
   if (n > MAX) {
      fprintf(stderr, "Number of elements must be less than %d\n", MAX);
      return 1;
   }

   printf("Enter the elements\n");

   for (i = 0; i < n; ++i)
      scanf("%d", &arr[i]);

   printf("Array has following elements\n");
   for (i = 0; i < n; ++i)
      printf("|%d| ", arr[i]);
      printf("\n");

   return 0;
}

Tom veut utiliser l'opération d'état pour voir la liste des modifications en attente.

[[email protected] trunk]$ svn status
M       array.c

array.c est modifié, c'est pourquoi Subversion afficheMlettre avant le nom du fichier. Ensuite, Tom compile et teste son code et cela fonctionne très bien. Avant de valider les modifications, il souhaite les revérifier en examinant les modifications qu'il a apportées.

[[email protected] trunk]$ svn diff
Index: array.c
===================================================================
--- array.c   (revision 2)
+++ array.c   (working copy)
@@ -9,6 +9,11 @@
    printf("Enter the total number of elements: ");
    scanf("%d", &n);
 
+   if (n > MAX) {
+      fprintf(stderr, "Number of elements must be less than %d\n", MAX);
+      return 1;
+   }
+
    printf("Enter the elements\n");
 
    for (i = 0; i < n; ++i)

Tom a ajouté quelques lignes dans le fichier array.c , c'est pourquoi Subversion affiche + signe avant les nouvelles lignes. Il est maintenant prêt à valider ses changements.

[[email protected] trunk]$ svn commit -m "Fix array overflow problem"

La commande ci-dessus produira le résultat suivant.

Sending        trunk/array.c
Transmitting file data .
Committed revision 3.

Les modifications de Tom sont correctement validées dans le référentiel.