ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
### 其他有用的命令 不象这章前面讨论的那些经常用到的命令,这些命令只是偶尔被用到。 ### **svn cleanup** 当Subversion改变你的工作拷贝(或是`.svn`中的任何信息),它会尽可能的小心,在修改任何事情之前,它把意图写到日志文件中去,然后执行log文件中的命令,然后删掉日志文件,这与分类帐的文件系统架构类似。如果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** **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. ~~~ 在上一个例子里,将会拷贝目录`mytree`到版本库的`some/project`下: ~~~ $ svn list file:///usr/local/svn/newrepos/some/project bar.c foo.c subdir/ ~~~ 注意,在导入之后,原来的目录树并*没有*转化成工作拷贝,为了开始工作,你还是需要运行**svn checkout**导出一个工作拷贝。