mjs*_*mjs 10 svn svn-externals svn-propset
是否可以操纵subversion属性,例如svn:externals
仅通过URL?(即没有工作副本.)
我想要一个脚本,svn:externals
在给定subversion URL的情况下固定到特定版本,但这似乎是不可能的:
$ svn propset foo bar https://example.com/svn/myproject/trunk
svn: Setting property on non-local target 'https://example.com/svn/myproject/trunk' needs a base revision
$ svn propset foo bar -r HEAD https://example.com/svn/myproject/trunk
svn: Try 'svn help' for more info
svn: Cannot specify revision for setting versioned property 'foo'
$ svn propset foo bar --revprop -r HEAD https://example.com/svn/myproject/trunk
svn: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existent
svn: At least one property change failed; repository is unchanged
svn: Error setting property 'foo':
could not remove a property
Run Code Online (Sandbox Code Playgroud)
(如果我使用的是实际的修订版号,我会得到相同的结果HEAD
.)
是的,虽然它有点像黑客; svn propedit可以更改URL目标:
svn propedit foo --editor-cmd "echo bar>" http://example.com/svn/myproject/trunk -m "Property changed"
您可以使用该svnmucc
命令以非交互方式设置URL的属性,例如svn:externals
.
例:
$ svnmucc --root-url https://example.com/svn -m 'reference other/yap' \
propset svn:externals "^/otherproject/tag/xyz other
^/yetanother/tag/123 yap" myproject/trunk
Run Code Online (Sandbox Code Playgroud)
请注意,svnmucc
此外还支持其他命令propset
,并且可以在一次调用中链接多个命令(因此名称).结果只是一个变更集.
该svnmucc
命令是subversion源包的一部分,通常可以通过发行版的包管理器获得.例如,Fedora 25将其包含在subversion-tools
包中.OpenCSW甚至将它包含在主要的subversion包中.
不。更改文件的属性就像更改文件本身一样——您需要一个工作目录。有一些 Subversion 命令可以在不需要工作副本的情况下更改提交:svn cp
、svn mkdir
和svn delete
。其他一切都需要一个工作目录才能进行更改。
顺便说一下,您可以在没有工作副本的情况下对修订版本属性进行更改。修订属性包括提交注释 (svn:log)、提交者 ID (svn:author) 和提交时间 (svn:date)。