SVN - Processus de mise à jour

Jerry avait commis la première version du code. Mais il pense qu'il devrait écrire deux fonctions pour accepter l'entrée et afficher le contenu du tableau. Après modification, array.c se présente comme suit.

#include <stdio.h>
#define MAX 16

void accept_input(int *arr, int n) {
   int i;
   for (i = 0; i < n; ++i) 
   scanf("%d", &arr[i]);
}

void display(int *arr, int n) {
   int i;
   for (i = 0; i < n; ++i) 
   printf("|%d| ", arr[i]);
   
   printf("\n");
}

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

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

   printf("Enter the elements\n");
   accept_input(arr, n);

   printf("Array has following elements\n");
   display(arr, n);

   return 0;
}

Jerry compile et teste son code et est prêt à valider les modifications. Avant cela, il souhaite revoir les modifications à l'aide de la commande suivante.

[[email protected] trunk]$ svn diff

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

Index: array.c
===================================================================
--- array.c   (revision 2)
+++ array.c   (working copy)
@@ -2,6 +2,24 @@
 
 #define MAX 16
 
+void accept_input(int *arr, int n)
+{
+   int i;
+
+   for (i = 0; i & n; ++i)
+      scanf("%d", &arr[i]);
+}
+
+void display(int *arr, int n)
+{
+   int i;
+
+   for (i = 0; i < n; ++i)
+      printf("|%d| ", arr[i]);
+   
+   printf("\n");
+}
+
 int main(void)
 {
    int i, n, arr[MAX];
@@ -10,15 +28,10 @@
    scanf("%d", &n);
 
    printf("Enter the elements\n");
+   accept_input(arr, 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");
+   display(arr, n);
 
    return 0;
 }

Pour les nouvelles lignes ajoutées, Subversion montre + signe avant la ligne et pour la ligne supprimée, il montre -signe. Maintenant, Jerry essaie de valider les modifications à l'aide de la commande suivante:

[[email protected] trunk]$ svn commit -m "Add function to accept input and to display array contents"

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

Sending        trunk/array.c
svn: Commit failed (details follow):
svn: File or directory 'array.c' is out of date; try updating
svn: resource out of date; try updating

Subversion ne permet pas de valider les modifications de Jerry , car Tom a déjà modifié le référentiel et la copie de travail de Jerry est obsolète. Pour éviter d'écraser les modifications de l'autre, Subversion échoue cette opération. Jerry doit mettre à jour la copie de travail avant de valider ses modifications. Il utilise donc la commande de mise à jour comme indiqué ci-dessous.

[[email protected] trunk]$ svn update
G    array.c
Updated to revision 3.

Subversion montre la lettre G avant le nom de fichier, ce qui signifie que ce fichier a été fusionné.

[[email protected] trunk]$ svn diff

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

Index: array.c
===================================================================
--- array.c   (revision 3)
+++ array.c   (working copy)
@@ -2,6 +2,24 @@
 
 #define MAX 16
 
+void accept_input(int *arr, int n)
+{
+   int i;
+
+   for (i = 0; i < n; ++i)
+      scanf("%d", &arr[i]);
+}
+
+void display(int *arr, int n)
+{
+   int i;
+
+   for (i = 0; i < n; ++i)
+      printf("|%d| ", arr[i]);
+   
+   printf("\n");
+}

+
 int main(void)
 {
    int i, n, arr[MAX];
@@ -15,15 +33,10 @@
    }
 
    printf("Enter the elements\n");
+   accept_input(arr, 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");
+   display(arr, n);
 
    return 0;
 }

Subversion n'affiche que les modifications de Jerry , mais le fichier array.c est fusionné. Si vous observez attentivement, Subversion affiche maintenant le numéro de révision 3. Dans la sortie précédente, il montrait le numéro de révision 2. Vérifiez simplement qui a apporté des modifications au fichier et dans quel but.

[email protected] trunk]$ svn log
------------------------------------------------------------------------
r3 | tom   | 2013-08-18 20:21:50 +0530 (Sun, 18 Aug 2013)   | 1 line

Fix array overflow problem
------------------------------------------------------------------------
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
------------------------------------------------------------------------

La copie de travail de Jerry est maintenant synchronisée avec le référentiel et il peut valider ses modifications en toute sécurité.

[[email protected] trunk]$ svn commit -m "Add function to accept input and to display array contents"
Sending        trunk/array.c
Transmitting file data .
Committed revision 4.