在git-svn项目中使用git子模块

Mat*_*ias 15 git git-svn git-submodules

在我们的git-svn托管项目中,我们有3个上游项目都保存在GitHub上的本机git存储库中.由于这些上游项目的源代码在我们的控制和频繁变化之下,我们当前的解决方案,即每次我们改变某些东西时将构建工件重新部署到超级项目都是非常麻烦的.

我想拥有的是:

parent project (git-svn):
    --> submodule 1 (git)
    --> submodule 2 (git)
    --> submodule 3 (git)
Run Code Online (Sandbox Code Playgroud)

这样,子模块1-3的源代码与超级项目的源一起编译,但我可以单独将更改推送到子模块.

问题是:当我git svn dcommit在父项目上时会发生什么?这甚至有用吗?

更新 嗯,我只是设置了一个简单的项目结构,尝试类似于这个场景,并且在尝试在超级项目上进行dcommit时收到此错误消息:

a0301b11f3544a1e71067ff270eded65e4c8afbd doesn't exist in the repository at /opt/local/libexec/git-core/git-svn line 4775
Failed to read object a0301b11f3544a1e71067ff270eded65e4c8afbd at /opt/local/libexec/git-core/git-svn line 574
Run Code Online (Sandbox Code Playgroud)

有什么想法/建议吗?

cbz*_*cbz 10

你不能这样做,git子模块不能通过git-svn上传到svn存储库,它不支持这个.

  • 是的,我们同时将我们的整个源代码移动到付费的GitHub帐户.问题解决了. (2认同)

Dmi*_*nko 5

git-svn不允许这样做,但如果您可以访问SVN存储库服务器,则可以将SubGit安装到其中.它将为您创建一个链接的Git存储库,这样任何推送都将自动转换为SVN版本,反之亦然.之后,您可以将子模块添加到生成的Git存储库,并使用纯Git接口与SVN存储库一起使用.这些Git子模块不会被转换为SVN.

翻译是并发安全且相当透明的(svn:ignores将被转换为Git忽略,EOL转换为.gitattributes,标签转换为标签等).