如何在SVN信息库中以递归方式查看svn:ignore设置的所有忽略模式?


67

我看到可以使用proplist以及-R标志(递归)和-v标志(详细)来查看SVN存储库中每个目录上设置的属性的列表:

svn proplist -Rv

这显示了所有属性,例如svn:mime-type或svn:executable。我希望将其过滤为仅svn:ignore属性。我确信有某种方法可以将这个命令的结果通过shell命令传递给我,这只会向我显示我感兴趣的行,但是我不知道该怎么做。例如,某种类型的命令是最有用的一种类型的命令(但此命令不起作用!)。

svn proplist -Rv | grep "^  svn:ignore" | awk "{print \$1}"

我只是对grepawk之类的shell命令了解不足,无法对我有效。这只是一遍又一遍地显示“ svn:ignore”,但不会打印出目录路径或svn:ignore属性内容。这是我想获取的“ svn proplist -Rv”输出的示例,其中“ cache”是路径,“ *”是属性的值。

Properties on 'cache':
  svn:ignore
    *

如何使以上命令起作用和/或有更好的方法查看svn:ignore存储库中的所有属性?


1
关于awk的一些技巧:内联脚本通常使用单引号,因此您不必转义$,它实际上也可以为您进行正则表达式匹配:`awk'/ pattern / {print $ 1}”。我不知道svn-您要在与'svn:ignore'相同的行中查看的数据吗?如果没有,那么您的问题就比较棘手。如果是这样,您是否只想要第二个字段?
卡斯卡贝尔

不幸的是,我尝试查看的数据与svn:ignore不在同一行。它是内容的正上方和正下方。在我的问题的示例中,我想获取路径“缓存”以及“ *”,因为*表示“缓存”中的所有内容均被忽略。感谢您在awk上的提示。
stereoscott

我的坏-我一直在寻找示例输出,并以某种方式略过了。
卡斯卡贝尔

您的原始命令行几乎可以,只需添加一小部分(和一些删除即可​​:))),如下所示:svn proplist -Rv| grep -A2 svn:ignore这将从输入中列出接下来的两行:svn:ignore autosave如果您想查看目录名在其上设置了道具:svn proplist -Rv| grep -A2 -B1 svn:ignore输出类似:Properties on 'foo/bar/baz': svn:ignore autosave
Tylla

Answers:


135
svn pg -R svn:ignore .

...pg是的简写形式propget,因此等于...

svn propget -R svn:ignore .

11
@Ram-递归不起作用。与SVN一样,Git允许您将忽略模式应用于子目录,而不仅仅是根.gitignore。您想要cat `find -name .gitignore` | lessfind -name .gitignore -exec cat {} \; | less,都不如使用-R开关IMO那样漂亮。(也就是说,我很喜欢您的博客文章。我正在从Subversion学习Git,有趣的是看看栅栏的另一边!)
Kevin Vermeer

2
git svn show-ignore | grep -ve '^#\|^[[:space:]]*$' > .gitignore
Denis Denisov

3

很抱歉在这里迟到,但是这里有一个简单的解决方案。

只是grep。

svn proplist -Rv | grep svn:ignore -B1 -A1

在比赛前显示一行,在比赛后显示一行。


优雅!如果您想取消svn:ignore行,只需添加另一条管道至grep -v svn:ignore
Michael Rodby,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.