SVN - Rivedi le modifiche

Jerry ha già aggiunto il file array.c al repository. Tom controlla anche l'ultimo codice e inizia a lavorare.

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

Il comando sopra produrrà il seguente risultato.

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

Ma ha scoperto che qualcuno ha già aggiunto il codice. Quindi è curioso di sapere chi lo ha fatto e controlla il messaggio di log per vedere maggiori dettagli usando il seguente comando:

[[email protected] trunk]$ svn log

Il comando sopra produrrà il seguente risultato.

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

Quando Tom osserva il codice di Jerry , nota immediatamente un bug in esso. Jerry non stava controllando l'overflow dell'array, che poteva causare seri problemi. Quindi Tom decide di risolvere questo problema. Dopo la modifica, array.c avrà questo aspetto.

#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 vuole utilizzare l'operazione di stato per vedere l'elenco delle modifiche in sospeso.

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

Il file array.c viene modificato, ecco perché Subversion mostraMlettera prima del nome del file. Successivamente Tom compila e testa il suo codice e funziona bene. Prima di confermare le modifiche, desidera ricontrollarlo rivedendo le modifiche che ha apportato.

[[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 ha aggiunto alcune righe nel file array.c , ecco perché Subversion mostra + firmare prima di nuove righe. Ora è pronto per confermare le sue modifiche.

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

Il comando precedente produrrà il seguente risultato.

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

Le modifiche di Tom vengono salvate con successo nel repository.