Eclipse egit:“检测到打包文件损坏:未知的zlib错误”如何规避?

问题描述

| 在Ubuntu下,我们有一个由gitosis管理的git存储库,在磁盘已满之前,它一直运行良好。在仔细阅读了这个问题之后,我发现
git gc
git gc --aggresive
使我获得了很多磁盘空间。非常好。 不幸的是,这似乎已经破坏了自尊心,因为当我尝试克隆我们的存储库时(在检出阶段大约为10%时)收到此消息   检测到Packfile损坏:未知   zlib错误。 有趣的是,msysgit中的git像以前一样可以正常工作。 我尝试将egit升级到夜间版本0.12,因为有一些邮件列表消息暗示此问题已在上个星期内得到解决,但无济于事。 现在我的问题是,我该如何对我的存储库进行处理以使其状态再次生效?我可以完全控制运行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     

解决方法

        获得没有EGit的克隆的一种方法是: 在服务器上捆绑 在客户端复制代表该捆绑包的唯一文件 尝试在命令行中克隆它。 既然您提到了可以使用msysgit处理捆绑软件,这表明Egit或JGit方面存在错误,如错误330758所示。 通常的做法是使用此p2更新站点将夜间更新为最新的EGit,然后查看问题是否仍然存在。 如果问题仍然存在,则可以提交错误报告或完成现有的报告(330758)。     ,        请检查您正在运行的Git版本,并确保它们匹配。     ,        最新的egit 0.12没有显示此行为。 希望该错误已得到修复,而不仅仅是偶然的副作用。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...