如何查找谁从 SVN 存储库中的文件中删除了一行?

如何查找谁从 SVN 存储库中的文件中删除了一行?

我从事一个非常大的项目(超过 10000 个版本),有时我需要知道其他用户中谁删除了文件中的某行。有办法吗?我可以svn blame使用修订号来检查该修订中是否存在某行,然后查看该行在哪个修订中消失,并查看谁提交了该修订,但对于这个大项目,该过程很不方便。

有没有更聪明的方法来做到这一点?

答案1

我会检查文件的历史记录,并尝试快速找到该行存在的修订版本,然后将责任归咎于 HEAD 和该修订版本。

如果该文件自创建以来已经历了 100 次修订,那么如果您通过二进制搜索来查找该行,那么您不必查看超过 10 个不同的修订。

答案2

它会自动完成您需要的操作,但速度不是很快,因为它不使用上面建议的二进制搜索:

svn log FILE | egrep '^r[0-9]' | sed -e 's/ .*//' | while read rev; do echo $rev ; svn cat FILE -"$rev" | grep "case STRING" && break  ; done 

答案3

svn log --diff将识别出第 0 列中带有“-”的删除。还可以搜索“r”,以便查看修订版本。

% svn log --diff src/fozbo.cpp -r22222:HEAD | grep -e '^r' -e '^-.*xyzzy'
r22222 | jruser | 2016-07-19 20:16:07 -0400 (Tue, 19 Jul 2016) | 1 line
-   else if ( password== "xyzzy") {

但是svn log --search那只会搜索提交消息。

相关内容