git svn获取期间解压缩树对象时发生致命错误

git svn获取期间解压缩树对象时发生致命错误,git,git-svn,Git,Git Svn,运行get svn fetch以从上游svn存储库中提取最新的分支时,我遇到以下错误: $ git svn fetch fatal: failed to unpack tree object 5ecb324e8b8fcb918acb253f33edc6ce49e49e0d read-tree 5ecb324e8b8fcb918acb253f33edc6ce49e49e0d: command returned error: 128 现在,每次尝试git svn在本地回购上都会导致相同的错误。最初

运行get svn fetch以从上游svn存储库中提取最新的分支时,我遇到以下错误:

$ git svn fetch
fatal: failed to unpack tree object 5ecb324e8b8fcb918acb253f33edc6ce49e49e0d
read-tree 5ecb324e8b8fcb918acb253f33edc6ce49e49e0d: command returned error: 128
现在,每次尝试git svn在本地回购上都会导致相同的错误。最初我运行的是git版本1.5.6.4_0,出错后我尝试更新到1.6.0.2_2,但问题仍然存在


有没有办法清理这种腐败现象?上游存储库的新git svn克隆是可以的,但我想保留我现有的设置。我已经浏览了文档,并在谷歌上搜索了这个问题,但运气不好。

最可能的原因是文件或提交(树引用的)已损坏或丢失。或者树本身可能已损坏。检查:

git fsck --unreachable HEAD $(cat .git/refs/heads/*)

这将显示一堆你不关心的“悬空”文件;损坏的文件将报告“无效SHA1”或类似情况。我不知道丢失的文件会怎么报告。从上游回购中删除任何损坏的项目和
rsync
,以替换它们

我也有同样的问题。这是由于一个特定的SVN版本,git SVN无法以某种方式读取或处理。以下是我尝试的顺序:

  • 倒带到已知可用的版本:
    git svn reset-r 42
  • 重试获取:
    git svn fetch
    -从42开始获取每个版本,直到错误版本(比如50),然后显示相同的错误消息
  • 获取父对象:
    git svn Fetch--parent
    -别问我为什么。这需要更多的修改。但不知道这是否相关
  • 重试获取:
    git svn fetch
    -仍然不工作
  • 获取下一个修订版:
  • gitsvn fetch-r50
    -有效
  • git svn fetch-r 51
    -如果没有错误消息,请继续
  • git svn fetch-r xx
    -显示错误消息,这是错误的修订。不在乎
  • git svn fetch-r xx+1
    -有效
  • 重试获取:
    git svn fetch
    -工作!开始获取更多修订

  • 应该清理这个过程(可能是在第一步附近),但它对我来说很有效,不必重新开始新的克隆。

    在创建新的SVN分支后,我遇到了相同的错误消息。我可以通过删除完整的“.git/svn”目录并再次从svn获取来解决此问题:

    $ rm -rf .git/svn
    $ git svn fetch
    Rebuilding .git/svn/refs/remotes/trunk/.rev_map.1d5df120-ff1b-4f4f-af56-171ecbcc785d ...
    

    这再次从SVN获取了所有提交,并解决了错误。

    感谢您提供的信息。不幸的是,没有显示损坏的文件,只有少数无法访问的树/提交/blob。使用git作为svn回购的前端,我没有上游git可以与rsync进行恢复。我尝试从新的git svn克隆版本中使用rsync,但丢失了我所有的本地分支。2到3个月前,新闻组(或者邮件列表)中有一篇报道称,有人在重新打包回购协议时出现了类似问题。我没有找到报告,这可能意味着它不是完全相同的错误消息。我只是尝试重新打包。不走运。现在,我将继续讨论新的git svn克隆。谢谢你的建议。它成功了!但在我的情况下,我能够得到“有问题”的修订。我刚刚重置为x-1版本(x是最新的版本)和比“git svn fetch”更有效的x版本。谁能解释一下它修复了什么?git svn重置可能只是删除损坏的本地文件?