Svn-fix-mistakes
SVN-間違いを修正
_Jerry_が誤って_array.c_ファイルを変更し、コンパイルエラーが発生しているとします。 今、彼は変更を破棄したいと考えています。 この状況では、「元に戻す」操作が役立ちます。 元に戻す操作は、ファイルまたはディレクトリへのローカル変更を取り消し、競合状態を解決します。
[jerry@CentOS trunk]$ svn status
上記のコマンドは次の結果を生成します。
M array.c
次のように配列を作成してみましょう。
[jerry@CentOS trunk]$ make array
上記のコマンドは次の結果を生成します。
cc array.c -o array
array.c: In function ‘main’:
array.c:26: error: ‘n’ undeclared (first use in this function)
array.c:26: error: (Each undeclared identifier is reported only once
array.c:26: error: for each function it appears in.)
array.c:34: error: ‘arr’ undeclared (first use in this function)
make: ** *[array] Error 1
_Jerry_は、_array.c_ファイルで「元に戻す」操作を実行します。
[jerry@CentOS trunk]$ svn revert array.c
Reverted 'array.c'
[jerry@CentOS trunk]$ svn status
[jerry@CentOS trunk]$
次に、コードをコンパイルします。
[jerry@CentOS trunk]$ make array
cc array.c -o array
復帰操作の後、彼の作業コピーは元の状態に戻ります。 元に戻す操作では、1つのファイルとディレクトリ全体を元に戻すことができます。 ディレクトリを元に戻すには、以下に示すように-Rオプションを使用します。
[jerry@CentOS project_repo]$ pwd
/home/jerry/project_repo
[jerry@CentOS project_repo]$ svn revert -R trunk
これまで、作業コピーに加えられた変更を元に戻す方法を見てきました。 しかし、コミットされたリビジョンを元に戻したい場合はどうでしょう! バージョン管理システムツールでは、リポジトリから履歴を削除できません。 履歴のみを追加できます。 リポジトリからファイルを削除しても発生します。 古いリビジョンを元に戻すには、古いリビジョンで行われた変更をすべて元に戻し、新しいリビジョンをコミットする必要があります。 これは逆マージと呼ばれます。
Jerryが線形検索操作のコードを追加すると仮定します。 確認後、彼は変更をコミットします。
[jerry@CentOS trunk]$ svn diff
Index: array.c
===================================================================
--- array.c (revision 21)
+++ array.c (working copy)
@@ -2,6 +2,16 @@
#define MAX 16
+int linear_search(int* arr, int n, int key)
+{
+ int i;
+ for (i = 0; i < n; ++i)
+ if (arr[i] == key)
+ return i;
+ return -1;
+}
void bubble_sort(int *arr, int n)
{
int i, j, temp, flag = 1;
[jerry@CentOS trunk]$ svn status
? array
M array.c
[jerry@CentOS trunk]$ svn commit -m "Added code for linear search"
Sending trunk/array.c
Transmitting file data .
Committed revision 22.
ジェリーはトムが何をしているのか興味があります。 そこで、彼はSubversionログメッセージをチェックします。
[jerry@CentOS trunk]$ svn log
上記のコマンドは、次の結果を生成します。
------------------------------------------------------------------------
r5 | tom | 2013-08-24 17:15:28 +0530 (Sat, 24 Aug 2013) | 1 line
Add binary search operation
------------------------------------------------------------------------
r4 | jerry | 2013-08-18 20:43:25 +0530 (Sun, 18 Aug 2013) | 1 line
Add function to accept input and to display array contents
ログメッセージを表示した後、ジェリーは自分が重大な間違いをしたことに気付きます。 トムはすでにバイナリ検索操作を実装しているため、線形検索よりも優れています。彼のコードは冗長であり、ジェリーは変更を前のリビジョンに戻す必要があります。 そのため、まずリポジトリの現在のリビジョンを見つけます。 現在、リポジトリはリビジョン22にあり、以前のリビジョンに戻す必要があります。 リビジョン21。
[jerry@CentOS trunk]$ svn up
At revision 22.
[jerry@CentOS trunk]$ svn merge -r 22:21 array.c
--- Reverse-merging r22 into 'array.c':
U array.c
[jerry@CentOS trunk]$ svn commit -m "Reverted to revision 21"
Sending trunk/array.c
Transmitting file data .
Committed revision 23.