递归svn propset

时间:2009-11-19 16:18:07

标签: svn

我正在尝试使用通配符以递归方式向所有文件添加属性。

文件结构如下

D:>dir *.bob /s/b
D:\Source\key-test\test.bob
D:\Source\key-test\test2.bob
D:\Source\key-test\sub\test3.bob
到目前为止

属性(无)

D:>svn propget svn:keywords -R *.bob

尝试一个递归集(注意缺少test3.bob)

D:>svn propset svn:keywords "Author HeadURL Id Revision" -R *.bob
property 'svn:keywords' set on 'test.bob'
property 'svn:keywords' set on 'test2.bob'

更改为sub并确保我们可以设置prop(ok)

D:>cd sub
D:>svn propset svn:keywords "Author HeadURL Id Revision" -R *.bob
property 'svn:keywords' set on 'test3.bob'

任何人都知道 -R 是怎么回事,我也试过 - 递归

干杯,

亚当

D:>svn --version
svn, version 1.6.6 (SlikSvn:tag/1.6.6@40358) WIN32
   compiled Nov  3 2009, 15:31:43

4 个答案:

答案 0 :(得分:19)

实际上-R是递归的。例如:

svn propset svn:eol-style 'LF' -R *

这也适用于所有子文件夹。但是:

svn propset svn:eol-style 'LF' -R *.php

...仅适用于当前文件夹中的php文件,无论-R如何。添加:

svn propset svn:eol-style 'LF' -R */*.php

将在子文件夹上工作一级。添加额外的/ -s将进入另一个级别,依此类推......

我真的不确定如何指定(或者甚至可以这样做)它应该根据文件名和递归进行过滤。无论如何,试验都不会受到伤害,因为修改是局部的,并且总是可以通过恢复来抛弃......

答案 1 :(得分:11)

来自svn help propset

  

svn:keywords,svn:executable,   svn:eol-style,svn:mime-type和
  svn:need-lock属性不可能   在目录上设置。非递归的   尝试将失败,并递归   尝试将仅设置属性   在目录的子文件上。

答案 2 :(得分:8)

鉴于Gonzalo所指出的-R做什么(或不做)的文档存在歧义我已经使用了这个批处理文件而不是试图让svn做我想做的事

D:>type applyProps.cmd
@echo off
for /r . %%X in (*.bob) do (
svn propset svn:keywords "Author Id HeadURL Revision" "%%X"
)

答案 3 :(得分:1)

如果您的工作目录在UNIX下,您也可以尝试此命令。它对我有用:

svn propset svn:keywords "Id" `du -a | cut -f 2 | grep -v "\.svn" | grep "\.bob$" | sed "s/ /[[:space:]]/g"`