SVN相关技巧

回滚没有提交的修改

增加 --recursive 参数可以递归子目录:

~# svn revert --recursive .

生成 patch 文件

例如指定两个版本生成 patch 文件:

~# svn diff -r 454:455 --git > test.patch

也可以:

~# svn diff -r 454:455 --patch-compatible > test.patch

外部仓库

获取当前目录下的外部仓库列表:

~# svn propget --recursive svn:externals
kernel - http://192.168.1.XXX/svn/kernel/trunk/YYY YYY

SVN 命令可以增加 --ignore-externals 参数忽略外部仓库,例如:

~# svn status --ignore-externals

自动更新文件

根据 svn status 结果自动更新文件:

~# svn status | grep "^[\?I]" | sed -e 's/[?I] *//' | sed -e 's/ /\\ /g' | xargs svn add
~# svn status | grep "^\!" | sed -e 's/! *//' | sed -e 's/ /\\ /g' | xargs svn delete

修改仓库地址

需要 svn 1.7 以上版本:

~# svn relocate svn://sub.someaddress.com.tr/project