1

我们在 Ubuntu 下有一个由 gitosis 管理的 git 存储库,它一直运行良好,直到磁盘已满。在阅读了一些关于这个问题的内容后,我发现了这一点,git gcgit gc --aggresive让我恢复了相当多的磁盘空间。非常好。

不幸的是,这似乎破坏了 egit 中的某些内容,因为我在尝试克隆我们的存储库时收到此消息(在结帐阶段大约 10%)

检测到包文件损坏:未知的 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

4

3 回答 3

1

在没有 EGit 的情况下获得克隆的一种方法是:

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

由于您提到您可以使用 msysgit 处理捆绑包,这表明 Egit 或 JGit 端存在错误,如错误 330758 所示通常的做法是使用此p2 更新站点
更新到 EGit 的每晚最新版本,然后查看问题是否仍然存在。 如果问题仍然存在,您可以提交错误报告或完成现有报告 (330758)。

于 2011-03-17T12:07:45.043 回答
0

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

于 2011-03-16T19:36:20.490 回答
0

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

希望该错误已得到真正修复,而不仅仅是意外的副作用。

于 2011-05-31T17:34:06.570 回答