Eclipse egit:“检测到Packfile损坏:未知的zlib错误。”如何规避?

时间:2011-03-16 14:57:46

标签: eclipse git egit

我们在Ubuntu下有一个由gitosis管理的git存储库,它运行良好,直到磁盘已满。在仔细阅读了这个问题之后,我发现git gcgit gc --aggresive给了我相当多的磁盘空间。很好。

不幸的是,这似乎已经破坏了一些东西,因为我在尝试克隆我们的存储库时得到了这个消息(在结账阶段大约10%)

  

检测到Packfile损坏:未知   zlib错误。

有趣的是,msysgit中的git和以前一样好用。

我尝试将egit升级到0.12的夜间版本,因为有一些邮件列表消息暗示这已在上周修复,但无济于事。

我现在的问题是,我可以对我的存储库做些什么来到一个egit再次运行的状态?我可以完全控制运行gitosis的Ubuntu实例。


编辑:我从Eclipse事件日志中获得了一个堆栈跟踪

org.eclipse.jgit.errors.TransportException: Packfile corruption detected: Unknown zlib error.
    at org.eclipse.jgit.transport.BasePackFetchConnection.doFetch(BasePackFetchConnection.java:287)
    at org.eclipse.jgit.transport.BasePackFetchConnection.fetch(BasePackFetchConnection.java:225)
    at org.eclipse.jgit.transport.FetchProcess.fetchObjects(FetchProcess.java:214)
    at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:149)
    at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:111)
    at org.eclipse.jgit.transport.Transport.fetch(Transport.java:903)
    at org.eclipse.egit.core.op.CloneOperation.doFetch(CloneOperation.java:228)
    at org.eclipse.egit.core.op.CloneOperation.run(CloneOperation.java:135)
    at org.eclipse.egit.ui.internal.clone.GitCloneWizard.executeCloneOperation(GitCloneWizard.java:259)
    at org.eclipse.egit.ui.internal.clone.GitCloneWizard.access$3(GitCloneWizard.java:252)
    at org.eclipse.egit.ui.internal.clone.GitCloneWizard$4.run(GitCloneWizard.java:233)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: org.eclipse.jgit.errors.CorruptObjectException: Packfile corruption detected: Unknown zlib error.
    at org.eclipse.jgit.transport.PackParser$InflaterStream.read(PackParser.java:1530)
    at org.eclipse.jgit.transport.PackParser$InflaterStream.skip(PackParser.java:1500)
    at org.eclipse.jgit.util.IO.skipFully(IO.java:203)
    at org.eclipse.jgit.transport.PackParser.inflateAndSkip(PackParser.java:1352)
    at org.eclipse.jgit.transport.PackParser.indexOneObject(PackParser.java:834)
    at org.eclipse.jgit.transport.PackParser.parse(PackParser.java:448)
    at org.eclipse.jgit.storage.file.ObjectDirectoryPackParser.parse(ObjectDirectoryPackParser.java:178)
    at org.eclipse.jgit.transport.PackParser.parse(PackParser.java:410)
    at org.eclipse.jgit.transport.BasePackFetchConnection.receivePack(BasePackFetchConnection.java:649)
    at org.eclipse.jgit.transport.BasePackFetchConnection.doFetch(BasePackFetchConnection.java:280)
    ... 11 more

修改:已打开https://bugs.eclipse.org/bugs/show_bug.cgi?id=340305

3 个答案:

答案 0 :(得分:1)

获得没有EGit的克隆的一种方法是:

    服务器上的
  • make a bundle
  • 在客户端复制表示该捆绑包的唯一文件
  • 尝试在命令行中克隆它。

既然你提到你可以使用msysgit处理这个包,那就表明了Egit或JGit方面的一个错误,如bug 330758所示。
通常的做法是使用此p2 update site更新到每晚最新的EG,并查看问题是否仍然存在。
如果问题仍然存在,您可以提交错误报告或完成现有报告(330758)。

答案 1 :(得分:0)

请检查您正在运行的Git版本并确保它们匹配。

答案 2 :(得分:0)

最新的egit 0.12没有显示此行为。

希望这个bug已被修复为真实的,而不仅仅是偶然的副作用。