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

时间:2018-07-04 19:35:18

标签: gitlab gitlab-omnibus

摘要

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

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

复制步骤

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

  • 主服务器上的备份项目
  • 在新服务器上还原tarball
  • 转到新服务器的Web仪表板中的项目路径,并获取“无存储库”。

我为诊断问题所采取的步骤。假设该项目名为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重新配置-相同的结果
  • 尝试重新启动runsv服务:sudo systemctl restart gitlab-runsvdir-相同的结果

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

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

解决方案

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

2 个答案:

答案 0 :(得分:1)

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

sudo gitlab-rake cache:clear

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

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

sudo gitlab-rake gitlab:tcp_check[ibm.com,80]

答案 1 :(得分:0)

如果您使用的是docker-compose或docker run,请检查gitlab存储库目录是否具有正确的权限。

在我的情况下,在容器中/ var / opt / gitlab / git-data / repositories / user / my_repos没有正确的权限(出于某种原因我忽略了)。为了解决问题,我不得不更改repos目录的所有权。

即使您没有使用docker,存储库目录上的权限问题也可以解释“无存储库”错误。

希望这会有所帮助