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

Mae*_*rom 6 properties svn

如何从 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 次

最近记录:

11 年,2 月 前