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

处理特殊文件名

如果添加名称中带 @ 的文件,需要附加以 @ 结束,例如需要添加 lvm2_pvscan_systemd_red_hat@.service.in 文件:

~# svn add lvm2_pvscan_systemd_red_hat@.service.in@

自动更新文件

根据 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

修改仓库地址

需要 Subversion 1.7 以上版本:

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