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

时间:2016-01-13 09:49:04

标签: git gitlab mount sshfs

是否可以在某些本地服务器上安装所有存储库,并使用Gi​​tlab(托管在其他本地服务器上)进行浏览?

我使用Gitlab v8.3.3。我有以下情况:
- 我将所有存储库存储在本地服务器上,例如:192.168.5.5 /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中"

2 个答案:

答案 0 :(得分:1)

您需要在GitLab出现之前创建项目。

但是有一些考虑因素,GitLab期望回购是裸露的回购,并且预计还会设置一个HEAD文件。

我的建议是通过从git服务器导入每个repo来创建项目。这将创建包含所有提交和分支的裸存储库,并在GitLab数据库中创建项目。然后,如果你仍然希望在一个单独的服务器上使用repos,你可以将GitLab创建的文件夹移动到另一个服务器,然后按照你的尝试安装它们。

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

  • 卸载已设置的git仓库
  • 为每个回购创建空项目,其路径将与您当前的回购匹配。
  • 将你的git repos重新安装到创建空库的地方。

答案 1 :(得分:1)

我通过以下方式解决了这个问题:
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。按照How can I use GitLab on one server and store all of the repositories on another?中的描述安装我们的存储库(包括更改权限 - 请参阅答案)