SVN - Proceso de actualización

Jerry había cometido la primera versión del código. Pero él piensa que debería escribir dos funciones para aceptar la entrada y mostrar el contenido de la matriz. Después de la modificación, array.c tiene el siguiente aspecto.

#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 compila y prueba su código y está listo para realizar cambios. Antes de eso, quiere revisar los cambios usando el siguiente comando.

[[email protected] trunk]$ svn diff

El comando anterior producirá el siguiente resultado.

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;
 }

Para las nuevas líneas agregadas, Subversion muestra + firmar antes de la línea y para la línea eliminada se muestra -firmar. Ahora, Jerry intenta confirmar los cambios usando el siguiente comando:

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

El comando anterior producirá el siguiente resultado.

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 no permite confirmar los cambios de Jerry , porque Tom ya ha modificado el repositorio y la copia de trabajo de Jerry está desactualizada. Para evitar sobrescribir los cambios de los demás, Subversion falla en esta operación. Jerry debe actualizar la copia de trabajo antes de realizar sus cambios. Entonces usa el comando de actualización como se muestra a continuación.

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

Subversion muestra la letra G antes del nombre de archivo, lo que significa que este archivo se ha fusionado.

[[email protected] trunk]$ svn diff

El comando anterior producirá el siguiente resultado.

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 solo muestra los cambios de Jerry , pero el archivo array.c está combinado. Si observa con atención, Subversion ahora muestra la revisión número 3. En la salida anterior, mostraba la revisión número 2. Simplemente revise quién hizo los cambios en el archivo y con qué propósito.

[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
------------------------------------------------------------------------

Ahora la copia de trabajo de Jerry está sincronizada con el repositorio y puede confirmar sus cambios de forma segura.

[[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.