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

Iva*_*hev 13 history svn

我从事一个非常大的项目(10000 多个版本),有时我需要知道其他用户中的哪些人删除了文件中的某些行。有没有办法做到这一点?我可以svn blame使用修订号来检查该修订版中是否存在一行,然后查看该行在哪个修订版中消失并查看谁提交了该修订版,但是该程序对于那个大项目来说是蹩脚的。

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

ta.*_*.is 6

我会检查文件的历史记录并尝试快速找到存在该行的修订版,然后在 HEAD 和该修订版之间进行指责。

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

  • 是的,它非常适合单次拍摄,但我需要一些可以经常使用的东西。 (2认同)

小智 5

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

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 
Run Code Online (Sandbox Code Playgroud)


Rob*_*oun 5

svn log --diff将在第 0 列中用“-”标识删除。Grep 也为“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") {
Run Code Online (Sandbox Code Playgroud)

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