我正在为我的公司开发应用程序,我们在公司网络中使用私有(private) git 存储库。通过对同一主机使用多个上游(但通过不同的 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 的答案,或者对如何解决这个问题含糊不清。
最佳答案
子模块的 URL 可以是相对 URL。这只是可能有用的,因为它与默认 远程 URL 相关。因此,对于单个克隆,它仍然指向单个 URL(内部 或 外部,具体取决于默认的远程 URL);但是您可以创建供内部使用的克隆和供外部使用的单独克隆,然后使用子模块的相对 URL 应该可以工作。
如果出于某种原因你真的需要使用一个克隆——也许你在笔记本电脑上工作并且来回切换的频率足够高,以至于在两个克隆之间共享本地更改是不方便的——那么我唯一能做的选择想到的是创建一个脚本来在内部和外部之间切换时修改本地配置。我仍然认为最好不要调整子模块路径,所以我会为此使用一个相对 URL,并在从内部移动到外部时修改远程配置,反之亦然。
关于git - 在私有(private)仓库中管理多个上游 git 子模块 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53009308/