編程學習網 > 編程教程 > SVN 教程
2015
10-18

SVN修正錯誤

清華大佬耗費三個月吐血整理的幾百G的資源,免費分享!....>>>

假設Jerry 不小心修改array.c 文件編譯錯誤。現在,他想扔掉的變化。在這種情況下,恢復操作會有所幫助。恢復操作將撤消任何地方到一個文件或目錄的更改,并解決任何沖突的狀態。

[jerry@CentOS trunk]$ svn status

上面的命令將產生以下結果

M       array.c

讓我們 make array 如下:

[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

恢復操作后,他的工作副本是回到它的原始狀態。恢復操作可以恢復單個文件以及完整的目錄。恢復目錄用戶 -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.

Jerry 對 Tom 做什么很好奇,于是,他檢查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

查看日志消息后,Jerry意識到自己做了嚴重的錯誤。因為Tom已經實現二進制搜索操作,這是優于線性搜索。意味著他的代碼是多余的,現在Jerry有他的變化恢復到以前的版本。所以先找到存儲庫的當前版本。目前庫是在修訂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.

掃碼二維碼 獲取免費視頻學習資料

編程學習