本手册编写于描述 Subversion 1.2。如果您正在运行更新版本的 Subversion,我们强烈建议您访问https://svnbooks.subversion.org.cn/并查阅适合您的 Subversion 版本的本书版本。

其他有用命令

虽然这些命令不如本章前面讨论的命令使用频繁,但您偶尔会需要它们。

svn cleanup

当 Subversion 修改您的工作副本(或 .svn 中的任何信息)时,它会尽可能安全地进行。在更改工作副本之前,Subversion 会将它的意图写入日志文件。接下来,它执行日志文件中的命令以应用请求的更改,并在工作时锁定工作副本的相关部分,以防止其他 Subversion 客户端在更改过程中访问工作副本。最后,Subversion 会删除日志文件。在架构上,这类似于日志文件系统。如果 Subversion 操作被中断(例如,进程被杀死或机器崩溃),日志文件将保留在磁盘上。通过重新执行日志文件,Subversion 可以完成之前开始的操作,您的工作副本可以恢复到一致的状态。

这就是 svn cleanup 的作用:它搜索您的工作副本并运行任何剩余的日志,在此过程中删除工作副本锁定。如果 Subversion 曾经告诉您您的工作副本的某些部分被“锁定”,那么您应该运行此命令。此外,svn status 将在锁定项旁边显示一个 L

$ svn status
  L    somedir
M      somedir/foo.c 

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

不要将这些工作副本锁定与 Subversion 用户在使用“锁定-修改-解锁”并发版本控制模型时创建的普通锁定混淆;有关说明,请参阅锁定”的三种含义

svn import

svn import 命令是一种快速将未版本化的文件树复制到存储库中的方法,必要时创建中间目录。

$ svnadmin create /usr/local/svn/newrepos
$ svn import mytree file:///usr/local/svn/newrepos/some/project \
             -m "Initial import"
Adding         mytree/foo.c
Adding         mytree/bar.c
Adding         mytree/subdir
Adding         mytree/subdir/quux.h

Committed revision 1.

前面的示例将目录 mytree 的内容复制到存储库中 some/project 目录下

$ svn list file:///usr/local/svn/newrepos/some/project
bar.c
foo.c
subdir/

请注意,导入完成后,原始树不会被转换为工作副本。要开始工作,您仍然需要svn checkout 树的新工作副本。

TortoiseSVN 官方中文版 1.14.7 发布