我试图设置Gitolite 镜像概念,除了子模块外一切正常。
当我从从服务器克隆 repo(具有子模块)并更新子模块时,子模块是从主服务器克隆的。
如何使这些子模块也从从服务器克隆?
一种方法是,例如在 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) 命令。
注意:除非您仔细阅读了's和options的注释,git-clone
--reference
--shared
否则不要使用此选项。