【问题标题】:GitLab projects failed their last repository checkGitLab 项目未通过最后一次存储库检查
【发布时间】:2022-07-04 16:02:09
【问题描述】:

我收到了一封 gitlab 警报邮件,指出“一个项目未通过最后一次存储库检查”。 我确实在 Gitlab 管理面板中将错误检查为“上次存储库检查(刚刚)失败。请参阅 'repocheck.log' 文件以获取错误消息。”正如 Gitlab 管理面板中的建议,我检查了 repocheck.log 文件,错误如下。

“无法 fsck 存储库:错误:无法读取 0f188244898707e6090498bc03aafd8ac25e776e 无法从提交图的对象数据库解析提交 0f188244898707e6090498bc03aafd8ac25e776e 错误:无法读取 4ab7111f3f8f1083cee8e33ec033c18edfefb0e9"

上周的另一个回购也发生了同样的情况。即使有类似的错误消息,它还没有解决。试图在另一个 gitlab 实例中克隆相同的 repo 以重新创建问题,但那里的 repo 检查似乎没问题。 无法找到合适的解决方案。任何人都可以帮助解决这个问题。

【问题讨论】:

  • 这意味着对 Git repo 的自诊断失败。数据损坏的原因是例如存储失败、Git 错误和可能的防病毒(软件/恶意)软件。
  • 我刚刚在管理 GitLab 实例的几年中第一次看到了这条消息。我希望这不是 GitLab 15.0 的“功能”?
  • @JamesTSnell 关闭:GitLab 15 修复了导致这些检查以前无法运行的错误 - 问题一直存在但未报告:gitlab.com/gitlab-org/gitaly/-/issues/2359#note_966195929

标签: gitlab gitlab-ce


【解决方案1】:

这似乎是一个活跃的问题:https://gitlab.com/gitlab-org/gitaly/-/issues/2359#note_966195929 这个问题已经存在几年了,但我链接到的注释从今天开始有更新,包括有关修复和解决方法的信息。

无论如何:commit-graph 是一个相对较新的功能,因为它是打包数据的一种索引形式,所以可以重新创建它。因此,损坏的 repo 可以轻松修复而不会丢失数据。

【讨论】:

    【解决方案2】:

    可以这样复制:

    1. 访问提交图:项目侧边栏/存储库/图
    2. 通过重写历史删除一个可见的提交:
    git checkout <branch>
    git reset head~1 
    git commit -am "Replace last commit with a new one" 
    git push --force
    
    1. 刷新第1步的页面

    现在 GitLab 会在按计划的时间间隔运行存储库检查时向您发送“GitLab 项目的提交图未通过其最后的存储库检查”。

    这是一个错误,管理员和维护人员会收到关于此的警告,因为实际上并没有错。有关详细信息,请参阅 Anders Bandholm 链接的 GitLab 问题。

    【讨论】:

      猜你喜欢
      • 2018-04-02
      • 2019-04-08
      • 1970-01-01
      • 2014-11-28
      • 2020-09-21
      • 1970-01-01
      • 2015-04-21
      • 2016-03-04
      相关资源
      最近更新 更多