Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复我的TortoiseSVN存储库中的损坏?_Svn_Version Control_Tortoisesvn - Fatal编程技术网

如何修复我的TortoiseSVN存储库中的损坏?

如何修复我的TortoiseSVN存储库中的损坏?,svn,version-control,tortoisesvn,Svn,Version Control,Tortoisesvn,上个月,我们正常使用TortoiseSVN,但在尝试提交/更新一两个不常访问或更新的特定文件夹时,我们开始收到错误。“尝试在文件开始之前设置文件指针”和“sqllite[S8]:尝试写入只读数据库”错误混合出现。清理工作并没有解决这些问题 我们相信这个问题是由某个时候的磁盘故障引起的,但是由于这些问题只发生在这几个文件夹中,我们没有足够的备份来真正解决它。从那时起,我们又有近1000次提交。经过一些研究,我认为最好的方法是将所有有效的修订转储到一个新的存储库中,并在事后将错误的修订放回文件中 我

上个月,我们正常使用TortoiseSVN,但在尝试提交/更新一两个不常访问或更新的特定文件夹时,我们开始收到错误。“尝试在文件开始之前设置文件指针”和“sqllite[S8]:尝试写入只读数据库”错误混合出现。清理工作并没有解决这些问题

我们相信这个问题是由某个时候的磁盘故障引起的,但是由于这些问题只发生在这几个文件夹中,我们没有足够的备份来真正解决它。从那时起,我们又有近1000次提交。经过一些研究,我认为最好的方法是将所有有效的修订转储到一个新的存储库中,并在事后将错误的修订放回文件中

我遵循了此链接的建议:

下面是我使用的命令行svnadmin命令。D:\SVN是我们存储库的位置

检查错误修订:

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结构中
  • 提交更改
完成了

不知道这个错误意味着什么