在多个修订版中搜索文件中的某些内容
searching for some content in a file accross multiple revisions
我想使用 svn
执行以下操作:在文件中搜索修订历史中的特定字符串内容?这可能>?我该怎么做最好?
我是想出一个使用 svn cat -r1
和 grep
的脚本还是有更好的方法?
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
这有两个参数:要搜索的文件(路径)和要在文件中搜索的字符串。
我想使用 svn
执行以下操作:在文件中搜索修订历史中的特定字符串内容?这可能>?我该怎么做最好?
我是想出一个使用 svn cat -r1
和 grep
的脚本还是有更好的方法?
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
这有两个参数:要搜索的文件(路径)和要在文件中搜索的字符串。