本文档正在编写中,内容可能随时更改,可能无法准确描述任何已发布版本的 Apache™ Subversion® 软件。将此页面加入书签或将其推荐给他人可能不是一个明智的做法。请访问 http://svnbooks.subversion.org.cn/ 以获取本书的稳定版本。

有时你只需要清理一下

现在我们已经介绍了您经常使用 Subversion 执行的日常任务,我们将回顾一些与您的工作副本相关的管理任务。

处理工作副本

Subversion 不会跟踪服务器上的工作副本的状态或存在情况,因此在服务器上保留工作副本不会产生任何开销。同样,您也不需要让服务器知道您要删除工作副本。

如果您可能再次使用工作副本,那么将其留在磁盘上直到您准备好再次使用它并没有错,此时您只需执行 svn update 命令即可将其更新并准备好使用。

但是,如果您确实不再使用工作副本,则可以使用操作系统提供的任何目录删除功能安全地删除整个工作副本。我们建议您在这样做之前运行 svn status 命令,并查看其输出中以 ? 开头的任何文件,以确保它们不重要。

从中断中恢复

当 Subversion 修改您的工作副本(无论是您的文件还是其自身的管理状态)时,它会尽力以最安全的方式进行。在更改工作副本之前,Subversion 会将自己的意图记录在一个私有的 待办事项列表 中。接下来,它执行这些操作以实现所需的更改,在工作时对工作副本的相关部分保持锁定。这将阻止其他 Subversion 客户端在更改过程中访问工作副本。最后,Subversion 释放其锁定并清理其私有待办事项列表。从架构上讲,这类似于日志式文件系统。如果 Subversion 操作被打断(例如,如果进程被杀死或机器崩溃),则私有待办事项列表会保留在磁盘上。这允许 Subversion 稍后返回到该列表以完成任何未完成的操作,并将您的工作副本恢复到一致的状态。

这正是 svn cleanup 命令所做的:它搜索您的工作副本并运行任何剩余的待办事项,在完成这些操作时删除工作副本锁定。如果 Subversion 告诉您您的工作副本的某个部分 已锁定,请运行 svn cleanup 命令来解决问题。 svn status 命令也会告知您工作副本中的管理锁定,方法是在锁定路径旁边显示一个 L

$ svn status
  L     somedir
M       somedir/foo.c
$ svn cleanup
$ svn status
M       somedir/foo.c

不要将这些工作副本管理锁定与 Subversion 用户在使用锁定-修改-解锁模型的并发版本控制时创建的用户管理锁定混淆;请参阅侧边栏 “锁定”的多种含义 以进行说明。

TortoiseSVN 官方中文版 1.14.7 发布