2009-11-19 71 views
21

我试图递归地添加属性到通配符的所有文件。递归svn propset

文件结构如下图

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' 

变化子并确保我们可以设置道具(确定)

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/[email protected]) WIN32 
    compiled Nov 3 2009, 15:31:43 

回答

7

鉴于存在模棱两可在文档为-R做什么(或不做),如所指出的贡萨洛我用,而不是试图让SVN做什么,我想

这个批处理文件
D:>type applyProps.cmd 
@echo off 
for /r . %%X in (*.bob) do (
svn propset svn:keywords "Author Id HeadURL Revision" "%%X" 
) 
11

svn help propset

,当svn:关键字,SVN:可执行文件, 的svn:爱欧尔样式的svn:mime-type属性和
svn:需要锁定属性不能在目录上设置为 。非递归
尝试将失败,并且递归尝试将在目录的文件子级上设置仅属性 。

+0

你是说,尽管上市-R作为一个有效的选项的帮助下,上段_a递归操作将设置该属性只在directory_下的文件覆盖这和-R是因此还是无效? – 2009-11-19 16:31:38

+5

是的,这就是我从帮助中收集到的信息。在* nix中,你可以使用'find。 -name \ *。bob | xargs svn propset ....'实现你想要的,但不知道如何在没有cygwin的窗口上做到这一点。 – Gonzalo 2009-11-19 16:53:24

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

如果你的工作目录是在UNIX下,你也可以试试这个命令。它为我的作品:

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