在私有仓库中管理多个上游git子模块URL

时间:2018-10-26 12:58:47

标签: git git-submodules

我正在为公司开发应用程序,我们在公司网络内部使用私有git repo。通过使用多个上游到同一主机(但通过不同的SSH端口),我可以在内部和外部使用git项目,就像这样:

external      ssh://user@externalhost.example.com:1234/var/git/project.git
origin        ssh://user@internalhost.example.com/var/git/project.git

我的子模块仅在内部连接时才能工作。这是上游的示例子模块:

[submodule "common-code"]
    path = common-code
    url = ssh://user@internalhost.example.com:/var/git/common-code.git

是否可以管理子模块的多个上游,以便我可以在公司网络的内部和外部使用它们?

注意:我已经在SO上找到了一些与此相关的旧帖子,但是他们并没有真正解决OP的答案,或者对如何做到的含糊不清。

1 个答案:

答案 0 :(得分:0)

子模块的URL可以是相对URL。这仅对潜在有帮助,因为它相对于 default 远程URL。因此,对于单个克隆,它仍指向单个URL(内部外部,具体取决于默认的远程URL)。但是您可以创建供内部使用的克隆,并为外部使用创建单独的克隆,然后为子模块使用相对URL应该可以工作。

如果出于任何原因您确实需要使用单个克隆-也许您在笔记本电脑上工作,并且来回切换得足够频繁,以至于在两个克隆之间共享本地更改将很不方便-那么我唯一的选择是想到的是在内部和外部之间切换时创建一个脚本来修改本地配置。仍然我认为最好不要调整子模块的路径,因此我将为此使用相对URL,并在从内部迁移到外部(反之亦然)时修改远程配置。