其他有用的命令
最后更新于:2022-04-02 05:56:26
### 其他有用的命令
不象这章前面讨论的那些经常用到的命令,这些命令只是偶尔被用到。
### **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**导出一个工作拷贝。
';