SVN - Processo di aggiornamento

Jerry aveva eseguito il commit della prima versione del codice. Ma pensa che dovrebbe scrivere due funzioni per accettare l'input e per visualizzare il contenuto dell'array. Dopo la modifica, array.c appare come segue.

#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 e testa il suo codice ed è pronto a eseguire il commit delle modifiche. Prima di ciò, vuole rivedere le modifiche utilizzando il seguente comando.

[[email protected] trunk]$ svn diff

Il comando precedente produrrà il seguente risultato.

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

Per le nuove linee aggiunte, mostra Subversion + firmare prima della riga e per la riga rimossa viene visualizzato -cartello. Ora, Jerry prova a eseguire il commit delle modifiche utilizzando il seguente comando:

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

Il comando precedente produrrà il seguente risultato.

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 non consente di eseguire il commit delle modifiche di Jerry , perché Tom ha già modificato il repository e la copia di lavoro di Jerry non è aggiornata. Per evitare di sovrascrivere le modifiche reciproche, Subversion fallisce questa operazione. Jerry deve aggiornare la copia di lavoro prima di confermare le modifiche. Quindi usa il comando di aggiornamento come mostrato di seguito.

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

Subversion sta mostrando la lettera G prima del nome del file, il che significa che questo file è stato unito.

[[email protected] trunk]$ svn diff

Il comando precedente produrrà il seguente risultato.

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 mostra solo le modifiche di Jerry , ma il file array.c viene unito. Se osservi attentamente, Subversion ora mostra il numero di revisione 3. Nell'output precedente, mostrava il numero di revisione 2. Controlla semplicemente chi ha apportato le modifiche al file e per quale scopo.

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

Ora la copia di lavoro di Jerry è sincronizzata con il repository e può salvare in sicurezza le sue modifiche.

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