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.