SVN - Processo de Atualização

Jerry havia confirmado a primeira versão do código. Mas ele acha que deve escrever duas funções para aceitar a entrada e exibir o conteúdo do array. Após a modificação, array.c tem a seguinte aparência.

#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 seu código e está pronto para confirmar as alterações. Antes disso, ele deseja revisar as alterações usando o seguinte comando.

[[email protected] trunk]$ svn diff

O comando acima produzirá o seguinte 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 as novas linhas adicionadas, o Subversion mostra + sinal antes da linha e para a linha removida mostra -placa. Agora, Jerry tenta confirmar as alterações usando o seguinte comando:

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

O comando acima produzirá o seguinte 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

O Subversion não está permitindo submeter as alterações de Jerry , porque Tom já modificou o repositório e a cópia de trabalho de Jerry está desatualizada. Para evitar sobrescrever as mudanças uns dos outros, o Subversion falha nesta operação. Jerry deve atualizar a cópia de trabalho antes de enviar suas alterações. Então ele usa o comando de atualização conforme mostrado abaixo.

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

O Subversion está mostrando a carta G antes do nome do arquivo, o que significa que o arquivo foi mesclado.

[[email protected] trunk]$ svn diff

O comando acima produzirá o seguinte 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;
 }

O Subversion está mostrando apenas as mudanças de Jerry , mas o arquivo array.c foi mesclado. Se você observar cuidadosamente, o Subversion agora está mostrando a revisão número 3. Na saída anterior, ele estava mostrando a revisão número 2. Apenas revise quem fez as alterações no arquivo e para qual 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
------------------------------------------------------------------------

Agora a cópia de trabalho de Jerry está sincronizada com o repositório e ele pode enviar com segurança suas alterações.

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