即使存储库存在于 git_data_dirs 路径中,Gitlab 也会返回“No Repository”

cyb*_*ast 5 gitlab gitlab-omnibus

概括

备份和迁移后,某些存储库在 Web 控制台中返回“No Repository”错误,并且无法克隆。已验证存储库是否存在 git_data_dirs 文件夹中指定的内容。

作为测试,我可以直接从存储库/文件夹中克隆“无存储库”项目,因此存储库本身似乎没有任何问题。

重现步骤

不确定如何复制它,但这是我经历的步骤:

  • 主服务器上的备份项目
  • 在新服务器上恢复 tarball
  • 转到新服务器的 Web 仪表板中的项目路径,并获得“No Repository”。

我为诊断问题而采取的步骤。假设项目名为 myapp/myapp.foo.git:

  • 转到http://newgitserver.local/myapp/myapp.foo.git
  • 获取“无存储库”
  • 查看/etc/gitlab/gitlab.rb中的git_data_dirs:

    git_data_dirs({ "default": { "path": "/var/opt/gitlab/git-data"}, "silo": {"path": "/mnt/reposbackup/git-data"} })

  • 请注意,我的项目在两个文件夹中都可用:/var/opt/gitlab/git-data/repositories/myapp/myapp.foo.git AND /mnt/reposbackup/git-data/repositories/myapp/myapp.foo.git

  • 尝试重新启动服务器 - 结果相同
  • 尝试 sudo gitlab-ctl reconfigure - 结果相同
  • 尝试重新启动 runv 服务: sudo systemctl restart gitlab-runsvdir - 结果相同

我还查看了数据库,“projects.repository_storage”值似乎是正确的。即使将其更改为“默认”与“筒仓”(这是我的备用目录)似乎也不起作用。

我试图了解 gitlab 如何确定存储库的位置,因为对 repo-path 的检查似乎是失败的原因。

解决方案

sudo gitlab-rake cache:clear迁移完成后运行。

Cal*_*nes 2

您可能需要清除 Redis 缓存。尝试运行以下命令:

sudo gitlab-rake cache:clear
Run Code Online (Sandbox Code Playgroud)

Rake 是一个通用维护命令,很多用户都不知道,因为如果您使用纯云产品,则永远不需要它。它实际上只适用于本地产品。

有时问题纯粹是网络连接问题。您还可以使用 rake 来检查:

sudo gitlab-rake gitlab:tcp_check[ibm.com,80]
Run Code Online (Sandbox Code Playgroud)

  • 在本例中,我只是进行 ping 操作,并且需要可靠的 IP 地址才能命中。我总是 ping ibm.com,因为我知道它们可能会启动并运行。您可以使用任何您知道能够可靠响应 ping 的站点。 (4认同)