我正在尝试使用通配符以递归方式向所有文件添加属性。
文件结构如下
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
答案 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"`