使用 sshfs 将外部存储库导入 Gitlab

Import external repositories to Gitlab with sshfs

是否可以在某个本地服务器上拥有所有存储库并使用 Gitlab(托管在其他本地服务器上)浏览它?

我使用 Gitlab v8.3.3。我有以下情况:
- 我将所有存储库都存储在本地服务器上,比如:192.168.5.5 at /git
- 我还有一个托管 Gitlab 的本地虚拟机,位于:192.168.5.6
- 我将我的本地 git 服务器安装在 git-data 目录(这是保存存储库的地方)运行:
sshfs my.user@192.168.5.5:/git /var/opt/gitlab/git-data/repositories/server-group

server-group是我新建同名组时Gitlab创建的一个空目录

现在我希望能够通过 Gitlab 浏览以这种方式安装的存储库。
这可能吗?

我认为应该是,但它需要一些额外的配置?
当然简单:gitlab-ctl reconfiguregitlab-ctl restart 没有帮助,Gitlab 组 server-group 有 0 个项目,即使在它的目录中我有有效的 "repos.git".

您需要先在 GitLab 中创建项目,然后它们才会显示。

但是有几个注意事项,GitLab 期望回购是裸回购,并且还需要设置一个 HEAD 文件。

我的建议是通过从 git 服务器导入每个存储库来创建项目。这将创建包含所有提交和分支的裸仓库,并在 GitLab 数据库中创建项目。然后,如果您仍然希望将回购协议放在单独的服务器上,则可以将 GitLab 创建的文件夹移动到另一台服务器,然后在尝试时挂载它们。

或者,如果您仍想尝试显示当前的存储库,并希望它们有效。 (不确定他们是否会,如果他们不是裸回购)你可以试试:

  • 正在卸载您已设置的 git 存储库
  • 为您的每个存储库创建空项目,使其路径与您当前的存储库相匹配。
  • 将您的 git 存储库重新安装到创建空存储库的位置。

我通过以下方式解决了这个问题:
1。使用 GitLab API

创建具有相同名称的空存储库

curl -k --header "PRIVATE-TOKEN: <your_private_token>" -H "Content-Type: application/json" -d '{"name":"<name_here>","path":"<the_same_name_here>","visibility_level":"10","namespace_id":"<id_of_my_group>"}' "https://192.168.5.6/api/v3/projects"


2。按照 中的描述安装我们的存储库(包括更改权限 - 请参阅答案)