在多个修订版中搜索文件中的某些内容

searching for some content in a file accross multiple revisions

我想使用 svn 执行以下操作:在文件中搜索修订历史中的特定字符串内容?这可能>?我该怎么做最好? 我是想出一个使用 svn cat -r1grep 的脚本还是有更好的方法?

Svn 对此没有直接支持。

如果只有一个文件,这将起作用,尽管速度很慢。

svn log -q <file> | grep '^r' | awk '{print ;}' | \
  xargs -n 1 -i svn cat -r {} <file> | grep '<string>'

填写<file><string> for 循环也可以工作,因此您可以根据需要打印匹配的 file/revision。

使用 for 循环进行更多输出控制(这是 bash):

#!/bin/env bash
f=
s=
for r in $(svn log -q "$f" | grep '^r' | awk '{print ;}'); do
  e=$(svn cat -r $r "$f" | grep "$s")
  if [[ -n "$e" ]]; then
    echo "Found in revision $r: $e"
  fi
done

这有两个参数:要搜索的文件(路径)和要在文件中搜索的字符串。