通过删除文本找到svn修订版

mar*_*han 33 svn search revision

有没有办法通过搜索文件中删除的文本字符串来查找SVN修订版?我知道要搜索的确切文本以及要查看的文件,但有数百个修订版.

mar*_*han 31

以khmarbaise的剧本为基础,我想出了这个:

#!/bin/bash
file="$1"
REVISIONS=`svn log $file -q --stop-on-copy |grep "^r" | cut -d"r" -f2 | cut -d" " -f1`
for rev in $REVISIONS; do
    prevRev=$(($rev-1))
    difftext=`svn diff --old=$file@$prevRev --new=$file@$rev | tr -s " " | grep -v " -\ \- " | grep -e "$2"`
    if [ -n "$difftext" ]; then
        echo "$rev: $difftext"
    fi
done
Run Code Online (Sandbox Code Playgroud)

在命令行上传递文件名和搜索字符串:

xyz.sh "filename" "text to search"
Run Code Online (Sandbox Code Playgroud)

svn diff给了我添加它的地方和它被删除的地方; 我会留在这里,以防它对任何人都有用.在上一次修订版中有一条错误消息,我不知道如何摆脱(我仍然有很多bash要学习:))但转数是正确的.


khm*_*ise 9

只是一个小的bash脚本,过滤掉更改的行...如果你将pom.xml更改为你的文件可能与补充URL你有你需要的...(如果你在Unix系统上).将以下内容放入脚本文件(xyz.sh)并对输出执行过滤.

#!/bin/bash
REVISIONS=`svn log pom.xml -q|grep "^r" | cut -d"r" -f2 | cut -d" " -f1`
for rev in $REVISIONS; do
    svn blame -r$rev:$rev pom.xml | tr -s " " | grep -v " -\ \- "
done


xyz.sh | grep "Text you are searching for"
Run Code Online (Sandbox Code Playgroud)

打印输出将是这样的:

256 ......
Run Code Online (Sandbox Code Playgroud)

256是进行更改的修订版.