2012-06-29 33 views
4

我已经将一个巨大的Maven项目层次导入IntelliJ想法,现在想法已经在所有不同的层次上创建了.iml项目。我想svn:忽略这些文件。设置svn:递归忽略目录结构

有几个类似的问题,比如这一个:svn (subversion) ignore specific file types in all sub-directories, configured on root?

但是:回答总是与--recursive标志申请svn:ignore。这不是我正在寻找的,我只是想忽略我创建的文件,而不是在下面数百个目录中设置属性。

基本上,我有什么是

svn status | grep .iml 

输出看起来像这样:

?  foo/bar/bar.iml 
?  foo/baz/phleem.iml 
?  flapp/flapp.iml 

我想这样做是为每个条目dir/project.iml到将svn:ignore *.iml添加到dir。我猜我必须将上面的grep输入sedawk,然后从那里输入svn,但是我完全丧失了对sed或awk命令的准确性以及确切的svn命令(我不会覆盖现有的svn:忽略值)。

更新:我也不在寻找的是基于find的解决方案,因为可能有这个层次结构中的项目,其中.iml文件实际上已经提交,我不想干涉这些项目, m正在为我的IDE创建的.iml文件添加属性。

回答

8

您可以将您的客户端设置为全局忽略给定的文件扩展名。只需在您的Subversion配置文件中添加

global-ignores = *.iml 

更新:如果你只想忽略有关目录IML文件,你可以尝试

svn status | grep '^\?.*\.iml' | sed 's=^? *=./=;s=/[^/]*$==' | xargs svn propset svn:ignore '*.iml' 
+0

最后一行的'grep'部分将是一个比较安全问号逃脱,包含在模式中的点:'grep'^ \?。* \。iml''。 –

+0

为了完整起见:SVN配置生存在'〜/ .subversion/config'中。 –

+0

'svn propset'有一个警告。它会覆盖而不是添加到现有属性。 –