递归svn propset

Ada*_*han 22 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
Run Code Online (Sandbox Code Playgroud)

到目前为止的属性(无)

D:>svn propget svn:keywords -R *.bob
Run Code Online (Sandbox Code Playgroud)

尝试一个递归集(注意缺少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'
Run Code Online (Sandbox Code Playgroud)

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

D:>cd sub
D:>svn propset svn:keywords "Author HeadURL Id Revision" -R *.bob
property 'svn:keywords' set on 'test3.bob'
Run Code Online (Sandbox Code Playgroud)

任何人都知道怎么了-R,我也尝试过--recursive

干杯,

亚当

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

Aro*_*ron 19

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

svn propset svn:eol-style 'LF' -R *
Run Code Online (Sandbox Code Playgroud)

这也适用于所有子文件夹.然而:

svn propset svn:eol-style 'LF' -R *.php
Run Code Online (Sandbox Code Playgroud)

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

svn propset svn:eol-style 'LF' -R */*.php
Run Code Online (Sandbox Code Playgroud)

将子文件夹降低一级.添加额外的/ -s将进入另一个级别,依此类推......

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


Gon*_*alo 11

来自svn help propset:

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

  • 是的,这就是我从帮助中收集的内容.在*nix中你可以使用`find.-name\*.bob | xargs svn propset ....`实现你想要的,但不知道如何在没有cygwin的Windows上做到这一点. (5认同)

Ada*_*han 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"
)
Run Code Online (Sandbox Code Playgroud)