如何从 svn 命令行恢复目录上的几个属性之一?
我的 svn 主干有一个属性 svn:externals 来导入外部存储库。
/trunk
svn:external = /external/trunk
Run Code Online (Sandbox Code Playgroud)
当我建立一个新的分支 foo 时,外部也被更改为指向一个分支:
/branches/foo
svn:external = /external/branches/foo
Run Code Online (Sandbox Code Playgroud)
有时当我将一个分支合并回主干时,该属性会被复制,我最终得到:
/trunk
svn:external = /external/branches/foo
Run Code Online (Sandbox Code Playgroud)
通常我可以运行svn revert . --depth=empty
以撤消属性合并,但目录上还有其他属性也将被还原,特别是svn:mergeinfo
. 从我的 GUI 客户端,我可以很容易地恢复单个属性,但我并不总是记得这样做。有没有办法直接从 svn cmd 行做同样的事情,或者我是否需要编写一些疯狂的包装器svn propget
来获取和撤消差异?
小智 9
svn propset svn:externals "$(svn propget svn:externals . -r HEAD)" .
这会将属性设置为 HEAD 值。这是一种有效的解决方法,因为revert
只能应用于所有属性,而不适用于单个属性。
小智 0
仅供我将来参考,而不是供您参考,因为您可能已经有了答案......
svn propget PROPNAMETOREVERT `svn info | perl -ne 'print if s/URL: (.*)/\1/'` | perl -ne 'chomp; print' | svn propset PROPNAMETOREVERT -F - .
Run Code Online (Sandbox Code Playgroud)
为我工作(在单行属性上,可能需要对多行属性进行修改)。
这显然可以作为一个脚本:-)
归档时间: |
|
查看次数: |
4055 次 |
最近记录: |