【问题标题】:Using git submodules in a git-svn project在 git-svn 项目中使用 git 子模块
【发布时间】:2010-12-23 14:37:04
【问题描述】:

在我们的 git-svn 托管项目中,我们有 3 个上游项目都保存在 GitHub 上的本地 git 存储库中。由于这些上游项目的源代码在我们的控制之下并且经常更改,因此我们当前的解决方案,即每次更改时都将构建工件重新部署到超级项目中是相当麻烦的。

我想要的是这个:

parent project (git-svn):
    --> submodule 1 (git)
    --> submodule 2 (git)
    --> submodule 3 (git)

这样,子模块 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

有什么想法/建议吗?

【问题讨论】:

标签: git git-svn git-submodules


【解决方案1】:

你不能这样做,git子模块不能通过git-svn向上游推送到svn存储库,它不支持这个。

【讨论】:

  • 是的,我们同时将整个源代码转移到了一个付费的 GitHub 帐户。问题解决了。
【解决方案2】:

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

翻译是并发安全且相当透明的(svn:ignores 将被翻译成 Git 忽略,EOLs 被翻译成 .gitattributes,标签到标签等等)。

【讨论】:

    猜你喜欢
    • 2011-03-05
    • 1970-01-01
    • 2020-05-28
    • 2021-08-09
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多