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

Jerryarray.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.

杰瑞很好奇汤姆在做什么。所以他检查了 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.

觉得文章有用?

点个广告表达一下你的爱意吧 !😁