【问题标题】:Can’t get submodules to work in gitlab无法让子模块在 gitlab 中工作
【发布时间】:2015-09-15 06:48:50
【问题描述】:

我的计算机中有一个项目,其结构如下:

.
├── bin
├── code
│ └── src
├── data
├── doc
├── experiments
└── reports
└── summary

code/src 和 /reports/summary 是 .gitmodules 中定义的子模块

[submodule "code/src"]
path = code/src
url = ./code/src/

[submodule "reports/summary"]
path = reports/summary
url = /home/zunbeltz/Proyectos/reports/base/

我在工作场所的 gitlab 中创建了一个项目(版本 7.9.4)。添加新的原点后 git push -u 起源大师 子模块的链接断开,错误代码为 500。

我也在 gitlab.com(版本 7.14)中尝试过,但出现 404 错误

有人知道这里发生了什么吗?

注意:我确实在 gitlab 论坛上发布了此消息,但有任何答案。

【问题讨论】:

  • 如果您希望子模块来自与超级项目相同的 GitLab 服务器,您绝对可以使用相对远程 URL。只需找出路径中正确数量的“../”部分即可。

标签: gitlab git-submodules


【解决方案1】:

子模块的想法是使用您可以访问的 url 引用嵌套的 git repo。

./code/src//home/zunbeltz/Proyectos/reports/base/ 是您可以在本地访问的基于文件的 URL。
但是一旦推送到 Gitlab,就会说 Gitlab 不知道如何解释/访问这些 url。
因此断开的链接。

作为mentioned in the discussion:

在 Gitlab 上,您必须拥有 3 个存储库:

  • 一个用于父仓库
  • 每个子模块一个

在 GitLab 的父仓库中,您会看到与本地父仓库相同的结构 除了GitLab would use a special icon to represent that folder
这将代表一个gitlink,一个回购的special entry in the index

Ivan提到in the comments现在(2018年,三年后)官方文档“Using Git submodules with GitLab CI”。

【讨论】:

  • 我同意绝对路径(这可能是错误的,这是我做过的几次试验之一)。但是 gitlab 现在应该是具有相对路径的。
  • @zunbeltz 是的:子模块的 url 应该是 gitlab url,这反过来会在 Gitlab 上显示这种图标:stackoverflow.com/q/24242490/6309
  • 嗯,这并不完全正确。我们在 .gitmodules 文件中使用子模块的相对 URL,因为我们使用来自同一个 GitLab 服务器的 repos。相对 URL 被翻译(git 子模块同步)以更正 .git/config 中的绝对 URL。相对路径对 GitLab 服务器的重命名\移动有很大帮助。
  • @VonC,有相对的 - 不是真的,有绝对的远程 URL - 是的,它们在一个地方很痛苦,因为我们现在想重命名我们的 GitLab 服务器。顺便说一句,GitLab 现在正式推荐使用相对的:docs.gitlab.com/ce/ci/git_submodules.html
  • @Ivan 好的。谢谢你的链接。我已将其包含在答案中以提高知名度。
猜你喜欢
  • 2018-08-03
  • 2017-07-18
  • 2013-03-05
  • 1970-01-01
  • 2018-03-09
  • 1970-01-01
  • 2021-01-02
  • 2015-05-31
  • 1970-01-01
相关资源
最近更新 更多