非交互式脚本中使用svn propedit命令

3
我需要在提交后编辑文件的svn属性。因此,我想使用一个后置提交脚本。
例如:
当我提交名为example.ex的文件时,我有一个名为export的属性,其值设置为test。提交成功后,我有一个后置提交挂钩,执行一些智能操作(这对我的问题无关紧要),并在完成后需要更改(或删除)属性export到一个新值,如succeeded。
在命令行上,我会使用以下命令:
svn propedit "export"  file:///svn/repositoryName/path/to/file/in/repository/example.ex

这会打开我的系统编辑器vi,我就能看到值为test。我可以将其改为任何想要的内容,并通过:wq等vi命令保存并退出文件。
Subversion会返回如下信息。
"svn-prop.tmp" 1L, 10C written
Set new value for property 'export' on file:///svn/repositoryName/path/to/file/in/repository/example.ex'
Committed revision 67.

非常好。但是正如我所说,我需要在提交后的脚本中使用它,在那里我无法控制vi(或者我错了吗?)。

因此,Subversion给我提供了向命令propedit添加文件的可能性。该文件仅包含新值succeeded

新命令应该像这样:

svn propedit "export"  file:///svn/repositoryName/path/to/file/in/repository/example.ex --file /path/to/propertyValueFile/propValue.file

问题在于:最后一条命令无效。再次打开vi,我需要手动更改数值。为什么?我做错了什么吗?


好的,与此同时我意识到 --file 将使用该文件的内容作为日志消息。然而,同样的问题:我需要在脚本中使用它。 - derroman
2个回答

2
我找到了适合我的解决方案。
svn propedit "export" file:///svn/repositoryName/path/to/file/in/repository/example.ex --file /data/svn/intranet/hooks/fileWithLogMessage --editor-cmd "echo succeeded >"

--editor-cmd提供了另一个编辑器,我可以用echo newValueForProp超过propedit的智能。

现在它像魔法一样工作。

--


0
尝试使用svn propset而不是svn propedit。 使用propedit始终会打开外部编辑器...这就是它的用途。

不,那不是解决方案,因为如果属性已经设置,svn propset也无法工作。但我已经自己找到了解决方案。不过还是谢谢。 - derroman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接