我尝试设置Gitolite mirroring concept,除子模块外,其他一切正常。
当我从从属服务器克隆存储库(具有子模块)并更新子模块时,将从主服务器克隆子模块。
如何使这些子模块也从从属服务器克隆?
[一种方法是,例如,在接收后挂钩中,通过.gitmodules
和changing those submodules addresses确保git submodule sync
反映足够的子模块地址。
或者,请参见“ Git submodule url changed”和新命令(Git 2.25 +,2020年第一季度)
git submodule set-url [--] <path> <newurl>
[maxmelbin对象:
但是更改
.gitmodules
表示重新提交-对吗?
不一定:您可以进行修改而不提交,只将其保留为“私有”(对从属服务器而言是本地的。
问题是,由于所有存储库都在从属服务器中镜像,是否有一种方法可以在子模块更新期间自动选择本地存储库URL,而不管在.gitmodules中为该提交配置了哪些站点URL
我认为--reference
命令的git submodule update
参数可以实现这一目标。
--reference <repository>
此选项仅对添加和更新命令有效。这些命令有时需要克隆远程存储库。在这种情况下,此选项将传递给
git-clone
(1)命令。注意:除非您已仔细阅读git-clone
,否则请勿使用此选项。