subversion/svn的设计还是非常棒的!子命令清晰明了,外围工具或plugin有时不能work,还必须用命令行(根本入手)。
当时对scalability需求不强,所以没有像git, mercurail一样设计分布式。所以,这几年用svn少了一些。但对小项目足够了。
?
1.?外部editor
?
很多命令可能用外部editor,有时不用还搞不定(如下面的设置ignore list)。
?
* 可以在.profile里 export SVN_EDITOR=vim (or mate)
?
*?其实一般用editor来写一些命令参数args,如? svn pe svn:ignore .????这样打开一个svn*.tmp的文件,保存即可
?
*?使用时指定tmp文件, svn ps svn:ignore --file svn-prop.tmp .
?
2. ignore文件和目录
?
$ svn export spool spool-tmp
$ svn rm spool
$ svn ci -m 'Removing inadvertently added directory "spool".'
$ mv spool-tmp spool
$ svn propset svn:ignore 'spool' .
$ svn ci -m 'Ignoring a directory called "spool".'
?
3. ignore多个文件和目录
?
上面的方法只能是对一个目录和文件有效
?
多个的话,后面的文件会覆盖前面文件,可以用svn pg svn:ignore来查(反馈是多少重要)
?
此时可用 svn ps svn:ignore --file svn-prop.tmp .?把ignore list写在.tmp文件里
?
svn-prop.tmp:
dir1
dir2
dir3
?
4.?暴力解决问题
?
有时svn死活管不好,往往出现在目录移动上。这时就把目录下.svn目录删掉。
?
update?肯定会冲突,不怕。用svn resolve --acept working ,?然后再把需要svn add回去,再svn ci
?
5.?多用缩写
?
svn st?比svn status好打多了
?
6.?批量操作
?
?
?? svn delete $(svn status | sed -e '/^!/!d' -e 's/^!//')
?
?? svn add $(svn status | sed -e '/^?/!d' -e 's/^?//')
?
7.?切换库
?
svn switch --relocate svn://58.61.1.1/genius/master svn://192.168.1.1/genius/master
?
8.?外部引用
?
svn ps svn:externals --file external.txt .
external.txt
lib/zlib? svn://192.158.1.100/a/b/lib/zlib
?
这样就可以多个项目引用基础库了!
?
?
?