【发布时间】:2011-05-25 21:47:58
【问题描述】:
我们正在运行 git v1.7.1 并配置了 gitweb。我们也使用 gitolite 进行管理,但我认为这与这个问题无关。我们有时会在 Apache 日志中收到错误消息,例如:
missing object 0000000000000000000000000000000000000000 for refs/heads/...
末尾的省略号通常是分支名称。我相信零字符串应该是 SHA1 值。显然,全零不是 SHA1 值。我不清楚这个值是从哪里来的?
我在服务器上运行了 git fsck 并没有报告问题,但是 git gc 解决了问题。此外,我们能够很好地拉取和推送到这个存储库(和那个分支)。似乎只有 gitweb 受到影响。
我知道其他人已经看到了这个问题,因为这里有一个封闭的问题: Gitweb failure: fatal: missing object 0000000000000000000000000000000000000000 for refs/heads/master 这个问题没有答案。
其他信息
我们现在已经在我们的 gitolite-admin 存储库中看到了这个问题。我们的 gitolite-admin 存储库中没有分支,所以它不在分支上。
【问题讨论】:
-
也许当你不在任何分支时会发生这种情况?
-
根据谷歌这似乎是由“坏远程头”引起的,只需谷歌“缺少对象0000 ...”字符串。 "git fsck --verbose" 显示错误条目
-
您使用什么操作系统来运行 Apache/gitweb/Git?我可以通过不断更新 shell 中的 ref 在 Mac OS X 下(其中 [ rename(2) 不是原子的](weirdnet.nl/apple/rename.html))重新创建错误消息(它来自
git for-each-ref)在另一个 shell 循环中运行git for-each-ref时循环(Git 使用 rename(2) 更新松散的 ref 文件,最终git for-each-ref由于非原子性而尝试读取一个不存在的文件) .如果这是您的问题,那么错误可能只会影响 gitweb 显示的显示,并且您无能为力。 -
+1 我在 Ubuntu 11 服务器上遇到了同样的问题。 Git gc 修复了它。感谢您的帖子。