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


12

我在一个非常大的项目(10000多个版本)上工作,有时碰巧我需要知道其他用户中的谁删除了文件中的某些行。有办法做到吗?我可以svn blame使用修订号来检查该修订版本中是否存在一行,然后查看该行在哪个修订版本中消失,并查看谁提交了该修订版本,但是该过程对那个大型项目而言是la脚。

有更聪明的方法吗?

Answers:


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 

5

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

如果文件自创建以来已经历了100个修订,则如果您在修订中进行二进制搜索以查找该行,则不必查看10个以上的不同修订。


我没有看到这个意见,这对我来说似乎是个很好的建议:P
Phoshi

1
这与我的方法相同。我想要比10个修订版本更简单/更快的方法。
伊万·佩特鲁舍夫

...这是10个修订版本。在您发布上述问题时,您现在可以完成。除非这是必须做的事,否则请忽略我的评论。
ta.speot。是

2
是的,它非常适合单发拍摄,但是我需要可以经常使用的东西。
伊万·佩特鲁舍夫

3

svn log --diff将在零列中标识为带有“-”的删除。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") {

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.