Svn-update-process
SVN-更新プロセス
_Jerry_はコードの最初のバージョンをコミットしました。 しかし、彼は、入力を受け入れ、配列の内容を表示するために2つの関数を作成する必要があると考えています。 変更後、_array.c_は次のようになります。
#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_は彼のコードをコンパイルしてテストし、変更をコミットする準備ができています。 その前に、彼は次のコマンドを使用して変更を確認したいと考えています。
[jerry@CentOS trunk]$ svn diff
上記のコマンドは、次の結果を生成します。
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;
}
新しく追加された行については、Subversionは行の前に _ + ' 記号を表示し、削除された行については '-_ 記号を表示します。 現在、ジェリーは次のコマンドを使用して変更をコミットしようとします。
[jerry@CentOS trunk]$ svn commit -m "Add function to accept input and to display array contents"
上記のコマンドは、次の結果を生成します。
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
_Tom_はすでにリポジトリを変更しており、_Jerry’s_の作業コピーは古いため、Subversionは_Jerry’s_の変更をコミットできません。 互いの変更を上書きしないように、Subversionはこの操作に失敗します。 _Jerry_は、変更をコミットする前に作業コピーを更新する必要があります。 そこで、以下に示すように、更新コマンドを使用します。
[jerry@CentOS trunk]$ svn update
G array.c
Updated to revision 3.
Subversionは、ファイル名の前に G という文字を表示しています。これは、このファイルがマージされたことを意味します。
[jerry@CentOS trunk]$ svn diff
上記のコマンドは、次の結果を生成します。
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は_Jerry’s_の変更のみを表示しますが、_array.c_ファイルはマージされます。 注意深く観察すると、Subversionはリビジョン番号3を表示しています。 前の出力では、リビジョン番号2が表示されていました。 ファイルを誰がどのような目的で変更したかを確認してください。
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
------------------------------------------------------------------------
これで、_Jerry’s_作業コピーがリポジトリと同期され、安全に変更をコミットできます。
[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.