2010-07-31 48 views

回答

2

如果你在Linux上,并且你知道在哪个文件中看,你可以使用该shell脚本来输出该文件的所有版本。

#!/bin/bash 
svn log "$1" -q | grep -oE r[0-9]+ | xargs -t -n1 -r -d '\n' svn cat "$1" -r 

将工作副本文件名或存储库URL作为参数传递给此脚本。

如果一切都失败了,并且您正在使用svnadmin dump而不使用--incremental开关进行常规转储,则可以grep查找最新转储文件中的文本。

非增量转储包含每个文件的每个修订版的全文。

2

我知道这不是很漂亮,但它会相对较快:我会建议使用“人工”二分查找手动检查该文件的svn修订版。如果你有2000次修改,你只需要看看12个修订版本就可以缩小到违规版本的范围。

假设该行已添加到r1000中,最新版本是r3000。然后检查r2000,如果该线仍然存在,请在r2000和r3000之间(即r2500)中途选择一个修订版,否则在r1000和r2000之间(即r1500)中途选择修订版。只需继续使用此手动搜索算法缩小范围即可。用2000版本的窗口,你应该在12次迭代中得到它。 (2000,1000,500,250,125,64,32,16,8,4,2,1,宾果!)

相关问题