如何修复我的TortoiseSVN存储库中的损坏?
上个月,我们正常使用TortoiseSVN,但在尝试提交/更新一两个不常访问或更新的特定文件夹时,我们开始收到错误。“尝试在文件开始之前设置文件指针”和“sqllite[S8]:尝试写入只读数据库”错误混合出现。清理工作并没有解决这些问题 我们相信这个问题是由某个时候的磁盘故障引起的,但是由于这些问题只发生在这几个文件夹中,我们没有足够的备份来真正解决它。从那时起,我们又有近1000次提交。经过一些研究,我认为最好的方法是将所有有效的修订转储到一个新的存储库中,并在事后将错误的修订放回文件中 我遵循了此链接的建议: 下面是我使用的命令行svnadmin命令。D:\SVN是我们存储库的位置 检查错误修订:如何修复我的TortoiseSVN存储库中的损坏?,svn,version-control,tortoisesvn,Svn,Version Control,Tortoisesvn,上个月,我们正常使用TortoiseSVN,但在尝试提交/更新一两个不常访问或更新的特定文件夹时,我们开始收到错误。“尝试在文件开始之前设置文件指针”和“sqllite[S8]:尝试写入只读数据库”错误混合出现。清理工作并没有解决这些问题 我们相信这个问题是由某个时候的磁盘故障引起的,但是由于这些问题只发生在这几个文件夹中,我们没有足够的备份来真正解决它。从那时起,我们又有近1000次提交。经过一些研究,我认为最好的方法是将所有有效的修订转储到一个新的存储库中,并在事后将错误的修订放回文件中 我
svnadmin verify D:\SVN --keep-going
r33809: E140001: zlib <uncompress>: corupt data: Decompression of snvdiff data failed
r34866: E720131: Can't set position pointer in file D:\SVN\db\revs\34\34866': An attempt was made to move the file pointer before the beginning of the file.
r34892: E160004: Reading one svndiff window read beyond the end of the representation.
svnadmin: E205012: Failed to verify repository 'D:\SVN'
svnadmin dump D:\SVN -r 1:33800 > tortoisedump.txt
svnadmin dump D:\SVN -r 33801:33808 --incremental > tortoisedump33801-33808.txt
(Skipping 33809 and 33810)
svnadmin dump D:\SVN -r 33811:34808 --incremental > tortoisedump33811-34808.txt
svnadmin dump D:\SVN -r 34811:34865 --incremental > tortoisedump34811-34865.txt
(Skipping 34866 and 34867)
svnadmin dump D:\SVN -r 34868:34891 --incremental > tortoisedump34868-34891.txt
(Skipping 34892 and 34893)
svnadmin dump D:\SVN -r 34894:34997 --incremental > tortoisedump34894-34997.txt
(34998 showed as corrupt at one point, but not in my latest verify check. Excluded 34998 and 34999 for safety anyway)
svnadmin dump D:\SVN -r 35000:HEAD --incremental > tortoisedump35000-HEAD.txt
svnadmin load D:\SVN2020 < tortoisedump.txt
svnadmin load D:\SVN2020 < tortoisedump33811-34808.txt
svnadmin dump D:\SVN -r 33811:34808 > tortoisedump33811-34808.txt
输出以下错误:
svnadmin verify D:\SVN --keep-going
r33809: E140001: zlib <uncompress>: corupt data: Decompression of snvdiff data failed
r34866: E720131: Can't set position pointer in file D:\SVN\db\revs\34\34866': An attempt was made to move the file pointer before the beginning of the file.
r34892: E160004: Reading one svndiff window read beyond the end of the representation.
svnadmin: E205012: Failed to verify repository 'D:\SVN'
svnadmin dump D:\SVN -r 1:33800 > tortoisedump.txt
svnadmin dump D:\SVN -r 33801:33808 --incremental > tortoisedump33801-33808.txt
(Skipping 33809 and 33810)
svnadmin dump D:\SVN -r 33811:34808 --incremental > tortoisedump33811-34808.txt
svnadmin dump D:\SVN -r 34811:34865 --incremental > tortoisedump34811-34865.txt
(Skipping 34866 and 34867)
svnadmin dump D:\SVN -r 34868:34891 --incremental > tortoisedump34868-34891.txt
(Skipping 34892 and 34893)
svnadmin dump D:\SVN -r 34894:34997 --incremental > tortoisedump34894-34997.txt
(34998 showed as corrupt at one point, but not in my latest verify check. Excluded 34998 and 34999 for safety anyway)
svnadmin dump D:\SVN -r 35000:HEAD --incremental > tortoisedump35000-HEAD.txt
svnadmin load D:\SVN2020 < tortoisedump.txt
svnadmin load D:\SVN2020 < tortoisedump33811-34808.txt
svnadmin dump D:\SVN -r 33811:34808 > tortoisedump33811-34808.txt
现在我创建了一个新的存储库,名为SVN2020
svnadmin create SVN2020
最后,我尝试将转储加载到新的存储库中。这些运行没有问题:
svnadmin verify D:\SVN --keep-going
r33809: E140001: zlib <uncompress>: corupt data: Decompression of snvdiff data failed
r34866: E720131: Can't set position pointer in file D:\SVN\db\revs\34\34866': An attempt was made to move the file pointer before the beginning of the file.
r34892: E160004: Reading one svndiff window read beyond the end of the representation.
svnadmin: E205012: Failed to verify repository 'D:\SVN'
svnadmin dump D:\SVN -r 1:33800 > tortoisedump.txt
svnadmin dump D:\SVN -r 33801:33808 --incremental > tortoisedump33801-33808.txt
(Skipping 33809 and 33810)
svnadmin dump D:\SVN -r 33811:34808 --incremental > tortoisedump33811-34808.txt
svnadmin dump D:\SVN -r 34811:34865 --incremental > tortoisedump34811-34865.txt
(Skipping 34866 and 34867)
svnadmin dump D:\SVN -r 34868:34891 --incremental > tortoisedump34868-34891.txt
(Skipping 34892 and 34893)
svnadmin dump D:\SVN -r 34894:34997 --incremental > tortoisedump34894-34997.txt
(34998 showed as corrupt at one point, but not in my latest verify check. Excluded 34998 and 34999 for safety anyway)
svnadmin dump D:\SVN -r 35000:HEAD --incremental > tortoisedump35000-HEAD.txt
svnadmin load D:\SVN2020 < tortoisedump.txt
svnadmin load D:\SVN2020 < tortoisedump33811-34808.txt
svnadmin dump D:\SVN -r 33811:34808 > tortoisedump33811-34808.txt
我得到了这个错误,其中gp_CheckInventoryTransactions_sel.sql只是这个提交中添加的一个新文件
<<<Started new transaction, based on original revision 33811
* editing path : trunk/Database/Company/Stored Procedures/gp_CheckInventoryTransactions_sel.sql
...svnadmin: E160013: File not foundL transaction '33808-q35', path '/trunk/Database/Company/Stored Procedures/gp_CheckInventoryTransactions_sel.sql'
我刚收到错误信息
读取一个svndiff窗口读取超出表示结尾的内容
在windows文件资源管理器中使用OrtoiseSVN更新SVN目录时
我通过以下方式修复了它:
- 查找corrup目录(错误之前更新的最后一个目录/文件)
- 使用SVN导出,制作错误目录的副本(或从没有.SVN文件夹的其他地方获取副本)
- 使用SVN命令,删除错误目录并提交更改
- 将备份的目录复制回其来源
- 使用SVN命令,将目录添加到SVN结构中
- 提交更改
完成了
不知道这个错误意味着什么