修复 Gitlab-CE 仓库检查错误

CListery ARE YOU OK?

某一天在 gitlab 管理员邮箱中收到了 ‘GitLab Admin | One project failed its last repository check’ 的邮件,点开一看有一个仓库的自检过不了,于是有了这篇博客

原因调查

  • 根据文档提示,找到自检的日志文件

    /var/log/gitlab/gitlab-rails for Omnibus GitLab installations.

    /home/git/gitlab/log for installations from source.

  • 文件内容

    1
    E, [2024-10-30T07:24:02.126920 #1053] ERROR -- : path/repository: Could not fsck repository: dangling commit d8e2ebdd41444c2b868d6a321c3246ab6831d351
  • 根据日志信息,看起来是一个 dangling commit 引起的,但是仓库本身并没有这个问题,那很可能是 gitlab 的一些缓存信息出现了问题

解决方案

  • 查找 path/repository 仓库在服务器上的文件路径,这里引用官方的文档

    1. 在左侧栏的底部,选择 Admin
    2. 选择 概览 > 项目,选择项目。
    3. 定位 相对路径 字段。取值类似于:"@hashed/0b/91/0b91...f9.git"
  • 找到项目文件路径后,我们就可以进行修复了

    为避免出现不可控的情况,请确保已经对 gitlab 备份

    1. 切换到 git 用户

      1
      su - git
    2. 执行检查(这一步出现 error 不用理会)

      将之前找到的项目文件路径替换到命令中

      1
      2
      /opt/gitlab/embedded/bin/git \
      -C /var/opt/gitlab/git-data/repositories/@hashed/0b/91/0b91...f9.git fsck
    3. 清理缓存

      1
      2
      /opt/gitlab/embedded/bin/git \
      -C /var/opt/gitlab/git-data/repositories/@hashed/0b/91/0b91...f9.git gc
    4. 重新执行检查

      1
      2
      /opt/gitlab/embedded/bin/git \
      -C /var/opt/gitlab/git-data/repositories/@hashed/0b/91/0b91...f9.git fsck
  • 重新触发仓库自检

  • 标题: 修复 Gitlab-CE 仓库检查错误
  • 作者: CListery
  • 创建于 : 2024-10-30 16:29:16
  • 更新于 : 2024-11-15 15:53:32
  • 链接: http://clistery.github.io/2024/10/30/gitlab-ce/fix-repository-checks-error/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
修复 Gitlab-CE 仓库检查错误