我们想追踪SVN中该文件的多个修订版本中某个文件中的单行删除。如何找出哪些版本包含SVN中的某一行
我试着看各种修订/差异,看看它何时被删除,但无法找到有问题的修订。我们如何使用svn命令来做到这一点?
我们想追踪SVN中该文件的多个修订版本中某个文件中的单行删除。如何找出哪些版本包含SVN中的某一行
我试着看各种修订/差异,看看它何时被删除,但无法找到有问题的修订。我们如何使用svn命令来做到这一点?
如果你在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查找最新转储文件中的文本。
非增量转储包含每个文件的每个修订版的全文。
nedbatchelder.com为了这个目的做了一个python script。
我知道这不是很漂亮,但它会相对较快:我会建议使用“人工”二分查找手动检查该文件的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,宾果!)