如何修复SVN';工作副本文本库已损坏';?

如何修复SVN';工作副本文本库已损坏';?,svn,repository,Svn,Repository,在对我的svn回购协议进行了多次愉快的承诺之后,这段关系突然变坏了……svn翻了翻盖子,大喊:“工作副本文本库已损坏!” 这是什么原因造成的?我怎么修理它 Working copy text base is corrupt svn: Commit failed (details follow): svn: Checksum mismatch for '~/blah/.svn/text- base/sumonet.py.svn-base'; expected: '548b9bb4b24bc580

在对我的svn回购协议进行了多次愉快的承诺之后,这段关系突然变坏了……svn翻了翻盖子,大喊:“工作副本文本库已损坏!”

这是什么原因造成的?我怎么修理它

Working copy text base is corrupt
svn: Commit failed (details follow):
svn: Checksum mismatch for '~/blah/.svn/text-  base/sumonet.py.svn-base'; expected: '548b9bb4b24bc580ab8694c583b28013', actual: '8b2b3cf4615de3d8520ae4841b3b0a8b'

只需进行单独的新签出,并将您在旧工作副本中所做的更改复制到新副本中

对于较新的subversion版本,没有
.svn/text base/
目录。
.svn
存储在工作根目录下的
.svn/pristine
下,错误消息如下所示:

Sending        README
Transmitting file data .svn: E155017: Commit failed (details follow):
svn: E155017: Working copy text base is corrupt
svn: E200014: Checksum mismatch for text base of '/home/user/tmp/svntest/README':
   expected:  1f9167bc01e5bc9bfcb928ff03d6700a
     actual:  e0a1692ff5cab91e3e3a0d02dabe0251

svn: E200003: Delta source ended unexpectedly
您可以通过在上使用bash脚本来修复它。 它将用新的svn基文件替换损坏的svn基文件

  • 将有问题的文件复制到其他位置
  • 删除并提交存储库中的文件
  • 将文件复制到SVN并提交

  • @siddhadev脚本应该可以工作,但对于那些喜欢手动执行的人:

  • 将问题文件的最新版本导出为
    lastworkingrev.txt
  • 使用
    sha1sum lastworkingrev.txt
  • 使用
    Find查找subversion原始文件-命名“SHA1_CHECKSUM.svn base”
    并用
    lastworkingrev.txt的内容覆盖它
  • 承诺

  • 执行SVN清理小组->清理。

    这就是错误所在

    svn: E155017: Working copy text base is corrupt
    svn: E200014: Checksum mismatch for text base of : '/home/.../exampleFileCorrupted.cpp'
    ....
    
    对我有效的清晰解决方案:

    注意:将您的文件复制到SVN环境之外的其他文件中。

    cp exampleFileCorrupted.cpp ~/Desktop/
    
    然后如下所示:

  • 将cd复制到损坏文件所在的路径上 (以下所示为:的文本基校验和不匹配)
  • svn rm--强制示例文件损坏.cpp

    您将看到:D exampleFileCorrupted.cpp

  • 复制您在SVN文件夹中点1之前保存的文件,方法是:

    cp~/Desktop/examplefilecorrude.cpp.

  • (不要错过结尾的要点,意思是“复制到这里”)

  • 添加到svn使用:
    svn添加示例文件损坏。cpp

    您将看到:一个示例filecorrupted.cpp

  • 提交更改
    svn提交-m“提交消息”


  • 让我知道这是否有用

    我也有同样的问题,但之前的答案都没有帮助。在我的例子中,Subversion存储库的版本是1.6,但我已经允许IntelliJ在1.7版签出。除“svn:E200014:基本校验和不匹配”错误外,没有显示版本不匹配只需检查具有正确版本的新树即可解决此问题。

    在使用筛选我的转储后出现此问题

    cp exampleFileCorrupted.cpp ~/Desktop/
    
    修复了删除md5校验和

    sed-i'/Text-copy-source-md5/d'eias_only.dmp
    

    但是,可能会有一些后果…

    删除现有副本并重新检查您的问题将得到解决

    这对我很有用:

    svn rm --keep-local THE_CORRUPTED_FILE
    svn add THE_CORRUPTED_FILE
    svn ci
    

    我尝试了上面的一切,清理不起作用。SVN建议我签出一份新的副本。但是这个项目太大了,我修改了太多的代码,比较会花费很多时间。 这是我解决问题的方法,每一次改变都是如此

  • 删除所有.svn文件夹。此文件夹可能存在一个或多个,具体取决于SVN的版本。只要找到每一个并删除它
  • 签出工作文件夹。它将提示“不是空文件夹”,单击“是”。然后恢复工作副本

  • 我学会了不相信我的工作目录处于版本控制之下。当我准备提交时,我执行递归diff并将更改复制到签出目录中。这样,如果SVN阻塞,我所做的就是rm-Rf签出并执行新签出,然后重复copy命令


    我不是来找解决办法的。我来找这种古怪行为的原因,却一无所获。即使我是唯一使用分支并从命令行执行所有操作的人,这种情况也会发生,我比Eclipse或任何其他界面更信任命令行。

    这种情况使我想离开svn,转到mercurial或git。签出新副本,然后覆盖损坏的文件(*.svn base)我刚刚签出的一个也能工作。如果你有很多更改的文件,你可以从旧的工作拷贝/备份位置rsync:rsync-av--delete-during--exclude.svn。这就是为什么我把svn留在后面,改成git的原因。对于大型回购或许多更改来说,这太过分了。您所要做的就是复制受影响的文件,然后svn--强制删除受影响的文件,提交,svn添加副本,提交,完成。请参阅其他响应以了解具体步骤。这并没有为我解决问题,我必须替换subversion pristine文件。(参见my和@siddhadev答案)这是唯一对我有效的解决方案。“我试过其他的,但都没有用。”迈克尔·利金斯说,这是一个严重的错误。我只认真使用过环绕和TFS,它们似乎都比SVN好。对我不起作用。恢复有问题的文件并提交工作。但是,一旦我复制回有问题的文件并再次尝试提交,就会再次抛出相同的错误。@Tanayamitsah如果这是文本文件,则可以尝试仅复制文件的内容(ctrl+c、ctrl+v)或在命令行中,只需“svn cleanup”。不幸的是,这并没有解决我的问题:(我已重命名文件夹中的文件,然后单击“更新”按钮(因此,从SVN中删除了该文件),然后重新命名并提交该文件,就像提交一个新文件一样。在我的情况下,这种情况是由防病毒程序的假阳性导致的,该程序会自动删除一个“受感染的”文件我已经编译了可执行文件.Upvote,因为这是一个有效的解决方案,显然比排名更高的任何一个答案都要好。因为这样的问题,不得不吹走一个回购目录并重新开始,这很烦人,所以