我在一个大型项目中使用git superproject pattern,该项目由没有存储库帐户的Teamcity构建代理部署,但是存储库设置为允许匿名克隆。出于这个原因,我已经使用http://
url而不是他们的git url设置了子模块。这个问题是存储库拒绝http推送:
Total 0 (delta 0), reused 0 (delta 0)
error: RPC failed; result=22, HTTP code = 401
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
因此每次在切换分支时更新子模块时,我都必须git remote add-url --push
添加git://
网址。
有没有办法在超级项目中设置子模块,以便他们已经使用http://
网址进行提取,并使用git://
网址进行推送?
答案 0 :(得分:6)
LibreOffice project also uses submodules并包含:
默认情况下,子模块存储库处于称为“分离的HEAD”的状态,这意味着提交签出 - 超级项目(核心)需要的 - 不与本地分支名称相关联
不要忘记为您正在处理的子模块添加正确的pushurl,否则您将无法提交。
$ editor .git/modules/submodule/config
在
[remote "origin"]
部分中添加:
pushurl = ssh://logerrit/submodule
(类似于soulseekah的comment)(在您的情况下,使用git://
地址)
您也可以通过(在子模块中)
来完成git config remote.origin.pushurl git://...
如果你没有,如this project中所说,你会得到一个:
fatal: The remote end hung up unexpectedly