使用git flow和git子树

时间:2012-08-16 15:55:20

标签: git configuration git-flow git-subtree multiple-repositories

我刚刚将一个大的svn repo迁移到git并开始使用gitflow。它的作用就像一个魅力,但现在我正在考虑将这个大型回购分成几个较小的回购。

让我们假设repo目录树如下:

/repo
  - libs
  - apps
    -- app 1
    -- app 2

我们想把它分成三个repos,一个是核心结构(libs和apps目录),另外两个是app目录。

如果我使用git子树进行拆分,我可以在每个部分单独使用git flow,或者我必须全局使用它吗?

PS:这是我在stackoverflow中的第一个问题,请善待:)

1 个答案:

答案 0 :(得分:5)

我不使用git flow,但我认为答案取决于你的模块化程度。您可以在不部署app1和app2的情况下部署核心结构吗?你可以独立部署app1和app2吗?您的开发团队是否足够大且足够复杂,可以将它们视为独立的工作流程?

如果这些问题的答案是“是”,我认为将它们视为多个项目,每个项目都有一个独特的流程。但是,如果其中任何一个的答案都是“否”,我就会避免破坏你的项目。事实上,如果对app1和app2的更改也要求在大多数时间内对核心存储库进行更改,我会避免破坏您的存储库。

嵌套存储库,无论它们是使用子树,子模块还是(deity禁止)执行,只是.gitignore定义会使工作流更复杂。像git bisectgit log这样的命令变得有点不那么有用了;跟踪历史和错误变得有点困难。新开发人员必须学习更多东西才能开始编码。从个人经验来看:仔细踏上这条道路。如果您的子回购密切相关,您将在一年内回到这里为其他想要破坏其项目的人写这个答案,就像一个麻烦的Git版本的Pay It Forward。