svn 恢复目录上的单个属性?

svn 恢复目录上的单个属性?

如何从 svn 命令行恢复目录的几个属性之一?

我的 svn trunk 有一个属性 svn:externals 用于导入外部 repo。

/trunk
  svn:external = /external/trunk

当我建立一个新的分支 foo 时,外部也更改为指向一个分支:

/branches/foo
  svn:external = /external/branches/foo

有时,当我将分支合并回主干时,该属性会被复制过去,最终得到:

/trunk
  svn:external = /external/branches/foo

通常我可以运行svn revert . --depth=empty来撤消属性合并,但目录中还有其他属性也会被恢复,特别是svn:mergeinfo。从我的 GUI 客户端,我可以很容易地恢复单个属性,但我并不总是记得这样做。有没有办法直接从 svn cmd 行执行相同的操作,或者我需要编写一些疯狂的包装器来svn propget获取和撤消差异?

答案1

svn propset svn:externals "$(svn propget svn:externals . -r HEAD)" .

这会将属性设置为 HEAD 值。这是一个有效的解决方法,因为revert只能应用于全部属性,并且不存在个人特性。

答案2

这对我来说比对你来说更重要,因为你可能已经有答案了……

svn propget PROPNAMETOREVERT `svn info | perl -ne 'print if s/URL: (.*)/\1/'` | perl -ne 'chomp; print' | svn propset PROPNAMETOREVERT  -F - .

对我有用(在一行属性上,可能需要修改多行属性)。

这显然可以作为一个脚本:-)

相关内容