虽然不像本章先前讨论过的那些命令那么常用,但是有时你也需要这些命令。
当Subversion修改你的工作副本时(或者任何在.svn中的信息),它尝试尽可能做到安全。
在改变一个工作副本前,Subversion把它的意图写到一个日志文件中。接下来它执行日志文件中的命令来应用要求的修改。
最后,Subversion删除日志文件。从架构上来说,这与一个日志文件系统(journaled filesystem)类似。如果一个
Subversion操作被打断(例如,进程被杀掉了,或机器当掉了)了,日志文件仍在硬盘上。重新执行日志文件,Subversion可以
完成先前开始的操作,这样你的工作副本能回到一个可靠的状态。
以下是svn cleanup所做的:它搜索你的工作副本并执行所有遗留的日志,在这过程中删除锁。
如果Subversion曾告诉你你的工作副本的一部分被“锁定”了,那么你应该执行这个命令。另外,
svn status会在锁定的项前显示L。
$ svn status L somedir M somedir/foo.c $ svn cleanup $ svn status M somedir/foo.c
使用svn import是把未版本化的文件树复制到资料库的快速办法,它需要创建一个临时目录。
$ svnadmin create /usr/local/svn/newrepos $ svn import mytree file:///usr/local/svn/newrepos/some/project Adding mytree/foo.c Adding mytree/bar.c Adding mytree/subdir Adding mytree/subdir/quux.h Committed revision 1.
上面的例子把在some/project目录下mytree目录的内容复制到资料库中。
$ svn list file:///usr/local/svn/newrepos/some/project bar.c foo.c subdir/
注意在导入完成后,原来的树没有被转化成一个工作副本。为了开始工作,你仍然需要svn checkout这个树的一个新的工作副本。