svn 简单使用
引用http://www.subversion.org.cn/svnbook/1.4/index.html
参考了官方的1.4版本说明:
查看版本
svnversion --version
版本控制系统一般使用 锁定-修改-解锁 和 拷贝-修改-合并 两种做法,svn采用了第二种做法,但是还是提供了第一种做法的特性。重点是理解这两种模型的思路。
svn使用全局版本号,这意味着只要你做一次干净的update,所有的文件版本号都会变成同一个最新的版本号。
svn help subcommand可以查看各个子命令的细节。(常用)
svn checkout 检出文件
svn checkout URL [targetDirectory]
在每个子目录下都有个.svn目录,不要试图去修改它或者删除它,因为它记录了这个目录和这个目录下的文件和目录修订版本,上次修订时间,和原始目录和文件的内容。可以说是版本库中的一个缓存。
svn update 更新
svn update [path ...]
svn 修改
如果是修改文件内容,直接修改就好了。(其余一定要使用svn自带的命令)
svn add file/path
把某个文件或目录添加到版本控制,如果是目录的话,目录下面的文件也被加进去了,这时候你可以使用 --non-recursive 只添加目录。
svn delete file/path
切记,不要使用普通的删除去删除文件,一定要使用svn delete去删除文件或目录。
如果是文件的话马上就被删除了,如果是目录的话,要等到下次update才会被删除。
svn copy srcfile/srcPath tarFile/tarPath
拷贝文件或目录
svn move srcfile/srcPath tarFile/tarPath
移动文件或目录
svn mkdir
相当于新增一个目录,然后添加到版本控制
svn status 检查你的修改
svn status --verbose --show-updates [file/path...]
--verbose 会输出更更详细的信息
默认的status不需要subversion客户端去联系版本库,而是使用本地.svn目录下的缓存和现有的修改进行比较,而--show-updates可以指定去和版本库中的文件进行比较。
svn diff 检查你的修改的详细内容
svn diff [files/paths]
svn提供了多种区别引擎,但是默认使用-统一区别格式(unified diff format)
也是使用现有的文件和.svn中的缓存进行比较。
svn revert 还原
svn revert [files/paths]
也是把文件恢复成.svn中的“原始拷贝”
svn resolved 解决冲突 - 会单开一篇文章
svn commit
svn log 查看历史 - 记得使用svn help log查看详细参数
svn log --revision 可以指定查看某个版本
svn log --revision r1:r2 查看某个版本区间
svn log [file/path] 查看某个文件或者目录的修改记录
svn cat --revision/-r 版本号 file
查看某个版本的文件内容
svn list --revision/-r 版本号 path
查看某个版本的目录结构
svn cleanup 清理 - 有时候只需要进行清理
因为svn做任何更改的方式都是写日志文件,获得锁,执行日志文件中的操作,释放锁。目的是实现svn更改操作的原子性。
但是如果在修改的过程中进程死掉了或者机器挂了,锁还在,没执行完。
所以你只需要进行svn cleanup重新读日志,释放锁就ok了。