SVN - proces aktualizacji
Jerry popełnił pierwszą wersję kodu. Uważa jednak, że powinien napisać dwie funkcje akceptujące dane wejściowe i wyświetlające zawartość tablicy. Po modyfikacji array.c wygląda następująco.
#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 kompiluje i testuje swój kod i jest gotowy do wprowadzania zmian. Wcześniej chce przejrzeć zmiany za pomocą następującego polecenia.
[jerry@CentOS trunk]$ svn diff
Powyższe polecenie da następujący wynik.
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;
}
Dla nowych dodanych linii Subversion pokazuje + znak przed linią i dla usuniętej linii to pokazuje -znak. Teraz Jerry próbuje zatwierdzić zmiany za pomocą następującego polecenia:
[jerry@CentOS trunk]$ svn commit -m "Add function to accept input and to display array contents"
Powyższe polecenie da następujący wynik.
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 nie zezwala na zatwierdzenie zmian Jerry'ego , ponieważ Tom już zmodyfikował repozytorium, a kopia robocza Jerry'ego jest nieaktualna. Aby uniknąć wzajemnego nadpisywania zmian, Subversion nie powiedzie się tej operacji. Jerry musi zaktualizować kopię roboczą przed zatwierdzeniem zmian. Więc używa polecenia aktualizacji, jak pokazano poniżej.
[jerry@CentOS trunk]$ svn update
G array.c
Updated to revision 3.
Subversion pokazuje list G przed nazwą pliku, co oznacza, że plik został scalony.
[jerry@CentOS trunk]$ svn diff
Powyższe polecenie da następujący wynik.
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 pokazuje tylko zmiany Jerry'ego , ale plik array.c jest scalony. Jeśli uważnie obserwujesz, Subversion pokazuje teraz numer wersji 3. W poprzednim wyniku pokazywał numer wersji 2. Po prostu sprawdź, kto wprowadził zmiany w pliku i w jakim celu.
jerry@CentOS 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
------------------------------------------------------------------------
Teraz kopia robocza Jerry'ego jest zsynchronizowana z repozytorium i może on bezpiecznie zatwierdzać swoje zmiany.
[jerry@CentOS trunk]$ svn commit -m "Add function to accept input and to display array contents"
Sending trunk/array.c
Transmitting file data .
Committed revision 4.