我从事一个非常大的项目(超过 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
那只会搜索提交消息。