代码之家  ›  专栏  ›  技术社区  ›  Niel de Wet

如何修复SVN“工作副本文本库已损坏”?

  •  31
  • Niel de Wet  · 技术社区  · 14 年前

    工作副本文本库已损坏! "

    是什么引起的?我该怎么修?

    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'
    
    12 回复  |  直到 14 年前
        1
  •  36
  •   desmond13    10 年前

    这就是错误。

    svn: E155017: Working copy text base is corrupt
    svn: E200014: Checksum mismatch for text base of : '/home/.../exampleFileCorrupted.cpp'
    ....
    

    注意: 将文件复制到SVN环境之外的另一个文件中。

    cp exampleFileCorrupted.cpp ~/Desktop/
    

    然后如下所示:

    1. cd到损坏文件所在的路径 的文本基的校验和不匹配 )
    2. svn rm—强制exampleFileCorrupted.cpp

      您将看到:D exampleFileCorrupted.cpp

    3. 使用:

      cp ~/Desktop/exampleFileCorrupted.cpp .

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

    1. 添加到svn 使用: svn add exampleFileCorrupted.cpp

    2. 提交更改 : svn commit -m "Commit Message"

        2
  •  20
  •   Tim Cooper    5 年前

    这对我有效:

    svn rm --keep-local THE_CORRUPTED_FILE
    svn add THE_CORRUPTED_FILE
    svn ci
    
        3
  •  16
  •   khmarbaise    14 年前

        4
  •  16
  •   Bucket faoud    11 年前
    1. 在其他地方复制有问题的文件,
    2. 删除并提交存储库中的文件,
        5
  •  7
  •   siddhadev    11 年前

    对于更新的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
    

    您可以使用 https://gist.github.com/siddhadev/5814802 .

        6
  •  3
  •   Julian Go    11 年前

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

    1. 将问题文件的最新版本导出为 lastworkingrev.txt
    2. sha1sum lastworkingrev.txt
    3. 查找subversion原始文件 find . -name "SHA1_CHECKSUM.svn-base" 并用 lastworkingrev.txt文件
    4. 提交
        7
  •  2
  •   Gary Rush    10 年前

    只需签出一个正确版本的新树就解决了这个问题。

        8
  •  0
  •   Jeevitesh Singh    11 年前

    建立SVN清理团队->清理。

        9
  •  0
  •   Jehy    9 年前

    在过滤了我的垃圾后遇到了这个问题 https://github.com/jasperlee108/svndumpfilterIN

    修正删除md5校验和。。。

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

        10
  •  0
  •   Anand Dwivedi    9 年前

    删除现有的副本,并采取新的检查你的问题将得到解决。

        11
  •  0
  •   Linda Zeng    8 年前

    这是我用保留的每一个变化来解决问题的方法。

    1. .svn公司 文件夹。这个文件夹可能存在一个或多个取决于版本的SN。只要找到每一个并删除它。
    2. 签出工作文件夹。它会提示“不是空文件夹”,单击“是”。然后恢复工作副本。
        12
  •  0
  •   Jerry Miller    7 年前

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

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