在属性值中使用svn setprop和shell脚本变量

时间:2011-11-03 09:45:58

标签: svn shell

我想在shell脚本中使用svn setprop svn:externals命令中的变量。

路径设置为变量,并且工作正常:

LOCALPATH="/some/path"
TARGETFOLDER="folder"
svn propset svn:externals 'dir -r100 http://svn.example.com/repos/trunk' $LOCALPATH/$TARGETFOLDER/externals

但是,如果我尝试将变量用于修订号,则不起作用:

LOCALPATH="/some/path"
TARGETFOLDER="folder"
REV="100"
PROP="'dir -r$REV http://svn.example.com/repos/trunk'"
echo $PROP
svn propset svn:externals $PROP $LOCALPATH/$TARGETFOLDER/externals

PROP变量已正确回显,但propset不起作用。我总是收到以下错误:

svn: Cannot specify revision for setting versioned property 'svn:externals'

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:3)

这是在shell中转义单引号的问题。见there解释。玩弄你的案例,发现以下组合工作:

....
PROP="dir -r$REV http://.../trunk"
svn propset svn:externals ''"$PROP"'' $LOCALPATH/$TARGETFOLDER/externals

答案 1 :(得分:1)

我发现你的脚本没有任何问题。不过,我遇到了同样的问题。

如果您被此脚本屏蔽,可以考虑使用外部文件来设置您的媒体资源:

LOCALPATH="/some/path"
TARGETFOLDER="folder"
REV="100"
PROP="'dir -r$REV http://svn.example.com/repos/trunk'"
echo $PROP > svn.externals
svn propset svn:externals -F svn.externals
# rm svn.externals

注意:在调试shell脚本时,您可以使用xtrace标志而不是回显命令:

sh -x myscript.sh

它将输出每个执行的命令,前面加上+