我非常喜欢git grep. Subversion 中是否存在等效项?
答案1
正如回答从 grep 中排除 .svn 目录:
grep --exclude-dir=".svn"
此svngrep
功能提供类似于以下的基本功能git grep
:
svngrep() { grep --color=always --exclude-dir=".svn" -r "$1" . | less -R; }
粘贴到您的.bashrc
。
答案2
虽然这不是一个完美的解决方案,但我使用以下命令来查找特定文件的修订版本:
for rev in `svn log FILE_TO_SEARCH | grep '^r[0-9][0-9]* ' | cut -f1 -d" "`; do svn cat -$rev FILE_TO_SEARCH 2>/dev/null | grep -q PATTERN_TO_FIND && echo $rev;done
输出是包含该字符串的文件的修订号列表。
答案3
svn 可以列出其受源代码控制的文件,您可以使用 xargs 将文件列表导入 grep 命令行。为了处理带空格的文件名,您可以-d '\n'
在 xargs 中添加“ ”选项。为了悄悄跳过 svn 提到的目录,您可以-d skip
在 grep 中使用“ ”选项。您可能希望使用 egrep 而不是 grep,因为它的语法更常规(更像 perl)。
svn ls -R | xargs -d '\n' grep -d skip thingtogrepfor