svn edit 命令行用法将旧外部替换为新外部

svn edit commandline usage to replace old external to new external

我有一个 SVN 外部定义为 ^/project/subproj1/subproj2/subproj3/trunk@revision lib,需要替换为 ^/project/subproj1/subproj2/subproj3/tags/tagname lib

我曾尝试使用以下无效的命令。

svn propedit svn:externals --editor-cmd "(echo /project/subproj1/subproj2/subproj3/tags/tagname lib) >" 
http://myname.com/project/subproj1/subproj2/subproj3/tags/subproj3tag/system -m "Test tag"

我会先将 svn:externals 属性 转储到文本文件中:

svn propget svn:externals . > externals.txt

...然后用 sed:

对文件进行修改
sed -i 's/trunk@revision/tags\/tagname/' externals.txt

...最后再次设置修改后的属性:

svn propset svn:externals . -F externals.txt

如果您喜欢冒险,甚至可以在一个命令行中完成:

svn pg svn:externals . | sed 's/trunk@revision/tags\/tagname/' | svn ps svn:externals . -F -