SVN - Rever alterações

Jerry já adicionou o arquivo array.c ao repositório. Tom também verifica o código mais recente e começa a trabalhar.

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

O comando acima produzirá o seguinte resultado.

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

Mas ele descobriu que alguém já adicionou o código. Ele está curioso para saber quem fez isso e verifica a mensagem de log para ver mais detalhes usando o seguinte comando:

[[email protected] trunk]$ svn log

O comando acima produzirá o seguinte resultado.

------------------------------------------------------------------------
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 observa o código de Jerry , ele imediatamente percebe um bug nele. Jerry não estava verificando o estouro do array, o que poderia causar sérios problemas. Então Tom decide consertar esse problema. Após a modificação, array.c ficará assim.

#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 deseja usar a operação de status para ver a lista de alterações pendentes.

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

arquivo array.c é modificado, é por isso que o Subversion mostraMletra antes do nome do arquivo. Em seguida, Tom compila e testa seu código e está funcionando bem. Antes de confirmar as alterações, ele deseja verificar novamente, revisando as alterações que fez.

[[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 adicionou algumas linhas no arquivo array.c , é por isso que o Subversion mostra + assinar antes de novas linhas. Agora ele está pronto para enviar suas alterações.

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

O comando acima produzirá o seguinte resultado.

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

As alterações de Tom foram confirmadas com sucesso no repositório.