SVN 修复错误

九、SVN 修复错误

SVN 修复错误

假设 Jerry 意外地更改了 array.c 文件而导致编译错误,他想放弃修改。在这种状况下,‘revert’ 操作将派上用场。revert 操作将撤销任何文件或目录里的局部更改。

1
[jerry@CentOS trunk]$ svn status

让我们尝试创建一个数组,如下:

1
[jerry@CentOS trunk]$ make array

Jerry 在 array.c 文件里执行了‘revert’操作。

1
2
3
[jerry@CentOS trunk]$ svn revert array.c 
[jerry@CentOS trunk]$ svn status
[jerry@CentOS trunk]$

现在开始编译代码。

1
[jerry@CentOS trunk]$ make array

进行 revert 操作之后,他的文件恢复了原始的状态。 revert 操作不单单可以使单个文件恢复原状,而且可以使整个目录恢复原状。恢复目录用 -R 命令,如下。

1
2
[jerry@CentOS project_repo]$ pwd
[jerry@CentOS project_repo]$ svn revert -R trunk

现在,我们已经知道如何撤销更改。但是,假使你想恢复一个已经提交的版本怎么办!Version Control System 工具不允许删除仓库的历史纪录。为了消除一个旧版本,我们必须撤销旧版本里的所有更改然后提交一个新版本。这种操作叫做 reverse merge。

假设 Jerry 添加了一段线性搜索操作的代码,核查之后,他提交了更改。

1
2
3
[jerry@CentOS trunk]$ svn diff
[jerry@CentOS trunk]$ svn status
[jerry@CentOS trunk]$ svn commit -m "Added code for linear search"

Jerry 很好奇 Tom 以前写的代码。所以他检查了 Subversion 的 log 信息。

1
[jerry@CentOS trunk]$ svn log

查看 log 信息之后,Jerry 意识到他犯了个严重的错误。因为 Tom 已经写了比线性搜索更好的二分法搜索,Jerry 发现自己的代码很冗余,他决定撤销之前对版本的修改。首先,找到仓库的当前版本,现在是版本 22,我们要撤销回之前的版本,比如版本 21。

1
[jerry@CentOS trunk]$ svn up