11

我在一个大型项目中使用git 超级项目模式,该项目由没有存储库帐户的 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://url。

有什么方法可以在超级项目中设置子模块,使它们已经使用http://url 进行拉取,使用git://url 进行推送?

4

1 回答 1

6

LibreOffice 项目也使用子模块,包括:

默认情况下,您的子模块存储库处于一种称为“分离 HEAD”的状态,这意味着已签出的提交——这是超级项目(核心)需要的——与本地分支名称无关。

不要忘记为您正在处理的子模块添加正确的 pushurl,否则您将无法提交。

$ editor .git/modules/submodule/config

并在该部分[remote "origin"]添加:

pushurl = ssh://logerrit/submodule

(类似于soulseekah评论)(在你的情况下,使用git://地址)

您也可以通过(在子模块中)

git config remote.origin.pushurl git://...

如果您不这样做,如本项目所示,您将获得:

fatal: The remote end hung up unexpectedly
于 2013-04-18T11:28:07.447 回答