B.4. 回滚版本库里的版本

B.4.1. 使用版本日志对话框

如果想恢复某个版本或者版本范围的变更,最简单的方法是使用版本日志对话框。这种方法也可以用来撤销最近的若干次变更,把以前的某个版本变成最新版。

  1. 选中想要恢复变更的文件或者文件夹。如果想要恢复所有的变更,需要选中最顶层的文件夹。

  2. 选择TortoiseSVN显示日志,显示出版本列表。有可能需要使用全部显示或者下100 按钮,把想要恢复的版本显示出来。

  3. 选中想要恢复的版本。如果想要恢复一个版本范围,选中想要恢复的第一个版本,按住shift键,然后选中想要恢复的最后一个版本。注意,当恢复多个版本的时候,这些版本必须在列表中是连续的。用鼠标右键点击选中的版本(段),然后选择右键菜单恢复这些版本的变更

  4. 如果想要把以前的某个版本变成最新版本,右键点击选中的版本(范围),然后选择右键菜单恢复到此版本。就能够撤销被选中版本后面所有的变更。

工作副本已经恢复到了变更以前的状态。检查恢复后的结果,然后提交变更。

B.4.2. 使用合并对话框

如果要撤销更大版本范围的变更,可以使用合并对话框。上一个方法在后台使用了合并的机制,在这个方法里我们直接使用合并功能。

  1. 在工作副本上选择TortoiseSVN合并

  2. 起始: 文本框里输入想要恢复的变更所在的分支或标签的URL。它也将作为默认URL。

  3. 起始版本文本框里输入当前工作副本的版本号。如果能够保证没有其他人会提交变更,可以使用最新版本

  4. 确认使用“起始: ”的 URL检查框处于被选中的状态。

  5. 结束版本里输入想要恢复到的版本号。比如,想要恢复的最小版本号的一个版本号。

  6. 点击合并按钮完成合并。

工作副本已经恢复到了变更以前的状态。检查恢复后的结果,然后提交变更。

B.4.3. 使用 svndumpfilter

因为TortoiseSVN绝不会丢弃数据,所以那些被回滚的版本仍然以中间版本的形式被保留在版本库里。只是最新版本已经回到了以前的状态。如果想让版本库里的某些版本彻底消失,擦去这些版本曾经存在过的所有痕迹,就必须采取更极端的手段。不推荐使用这种方法,除非有很好的理由。比如某人向一个公开的版本库里提交了一份机密文件。

从版本库里删除数据的唯一方法就是使用svnadmin这个Subversion命令行工具。具体如何实现请参考版本库维护