2

我试图设置Gitolite 镜像概念,除了子模块外一切正常。

当我从从服务器克隆 repo(具有子模块)并更新子模块时,子模块是从主服务器克隆的。

如何使这些子模块也从从服务器克隆?

4

1 回答 1

2

一种方法是,例如在 post-receive 钩子中,通过更改这些子模块地址来确保.gitmodules反映足够的子模块地址,然后更改. git submodule sync

或者,请参阅“ Git submodule url changed ”和新命令(Git 2.25+,Q1 2020)

git submodule set-url [--] <path> <newurl>

maxmelbin对象:

但改变.gitmodules意味着新的提交——对吧?

不一定:您可以进行该修改而不提交它,将其保持为纯粹的“私有”(您的从属服务器本地)。

问题是,由于所有 repo 都镜像在从属设备中,有没有办法在子模块更新期间自动选择本地 repo url,无论在 .gitmodules 中为该提交配置了哪些站点 url

我认为命令的--reference参数git submodule update可以实现这一点。

--reference <repository>

此选项仅对添加和更新命令有效。
这些命令有时需要克隆远程存储库。在这种情况下,此选项将传递给git-clone(1) 命令。
注意:除非您仔细阅读了'soptions的注释,git-clone--reference--shared否则不要使用此选项。

于 2012-08-22T06:07:18.427 回答