当前位置: 代码迷 >> CVS/SVN >> svn 命令行技能
  详细解决方案

svn 命令行技能

热度:5982   发布时间:2013-02-26 00:00:00.0
svn 命令行技巧

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

?

这样就可以多个项目引用基础库了!

?

?

?

  相关解决方案