在Subversion版本库中search大型签入

过去人们把大量的文件检查到我们的Subversion版本库,后来感到遗憾。 为了解决这个问题,他们只是删除了目录,并进行了另一次检查(将大量文件留在版本库的历史logging中)。

由于这些庞大的文件是事故,而不是在历史上,我想用svndumpfilter过滤出来。 有没有简单的方法来查找检入的大型目录? 也许sorting修订按大小差异?

我基本上通过分析svndump文件并使用一个小的python脚本来find它:

$ # dump repository to file $ svnadmin dump /var/lib/svn/ > svn_full_dump.txt $ # find byte offsets of 'Revision-number' and save in file $ egrep -bo '^Revision-number: .+$' svn_full_dump.txt > revisions.txt $ head revisions.txt 75:Revision-number: 0 195:Revision-number: 1 664:Revision-number: 2 863:Revision-number: 3 1058:Revision-number: 4 1254:Revision-number: 5 1858:Revision-number: 6 $ # find size of checkins and sort by size $ python revision_size.py | sort -nr | head 1971768485 r1528 44453981 r2375 39073877 r1507 34731033 r2394 30499012 r484 ... 

python文件是:

 #!/usr/bin/env python f = file('revisions.txt') last_offset = 0 last_revision = None for l in f: l = l.strip() (offset, middle, revision) = l.split(':') offset = int(offset.strip()) revision_size = offset-last_offset if last_revision: print '%sr%s'%(revision_size, last_revision.strip()) last_revision = revision last_offset = offset # will ignore last revision f.close() 

更新:修复了revision_size脚本中的一个错误,其中的大小与右侧修订版本不太匹配。