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

标签 git git-submodules

我正在为我的公司开发应用程序,我们在公司网络中使用私有(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/

相关文章:

git - 2-版本软件 : Best VCS approach?

git - 重新创建docker-volume或服务器数据时如何再次推送到gitlab中?

git - git 子模块名称是否用于显示以外的任何用途?

git - 如何将 git 子模块恢复到它的提交版本?

git 在子模块 ("index file open failed: not a directory"中找不到索引)

git - 为什么 Jenkins 收到 git submodule update 的 Authentication Failed 错误?

git - 从哪里开始使用Pipeline Plugin创建Jenkins Gradle构建

Git push : The object is 12311134 byte, 大于此存储库中对象的 1048576 字节限制

Git 没有显示任何冲突,并且正在覆盖我的本地副本

git - 初始化 git repo 时 --bare 开关有什么区别?