我svn diff -c 789用来显示我们软件的修订版789所做的更改,但它显示了很多我不关心的文件,特别是测试文件.如何从diff中排除某些文件,例如所有与模式匹配的文件*Test.java?
我在Windows上使用Cygwin,如果这很重要的话.
由于svn diff不允许从输出中排除特定文件,下面是一个可用于实现该目的的BASH脚本.
它需要两个参数:
file有svn diff输出pattern要排除的文件(例如test/*)并file从匹配的文件中打印出没有更改的内容pattern.
#!/bin/bash
test $# -ne 2 && echo "Usage: $0 svn_diff_file exclude_pattern" && exit 1
ignore=0
while IFS= read -r line; do
echo $line | grep -q -e "^Index: " && ignore=0
echo $line | grep -e "^Index: " | grep -q -e "^Index: $2" && ignore=1
test $ignore -eq 0 && echo "$line"
done < $1
Run Code Online (Sandbox Code Playgroud)
更新
我刚刚遇到了一个完成这项工作的工具:filterdiff.它的用法与上面的脚本非常相似:
filterdiff svn_diff_file -x exclude_pattern