
- SVN 教程
- SVN - 首頁
- SVN - 基本概念
- SVN - 環境設定
- SVN - 生命週期
- SVN - 檢出流程
- SVN - 執行更改
- SVN - 審查更改
- SVN - 更新流程
- SVN - 修復錯誤
- SVN - 解決衝突
- SVN - 標籤
- SVN - 分支
- SVN 有用資源
- SVN - 快速指南
- SVN - 有用資源
- SVN - 討論
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
還原操作後,他的工作副本恢復到原始狀態。還原操作可以還原單個檔案以及整個目錄。要還原目錄,請使用 -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.
廣告