我刚刚将一个大的svn repo迁移到git并开始使用gitflow。它的作用就像一个魅力,但现在我正在考虑将这个大型回购分成几个较小的回购。
让我们假设repo目录树如下:
/repo
- libs
- apps
-- app 1
-- app 2
我们想把它分成三个repos,一个是核心结构(libs和apps目录),另外两个是app目录。
如果我使用git子树进行拆分,我可以在每个部分单独使用git flow,或者我必须全局使用它吗?
PS:这是我在stackoverflow中的第一个问题,请善待:)
答案 0 :(得分:5)
我不使用git flow,但我认为答案取决于你的模块化程度。您可以在不部署app1和app2的情况下部署核心结构吗?你可以独立部署app1和app2吗?您的开发团队是否足够大且足够复杂,可以将它们视为独立的工作流程?
如果这些问题的答案是“是”,我认为将它们视为多个项目,每个项目都有一个独特的流程。但是,如果其中任何一个的答案都是“否”,我就会避免破坏你的项目。事实上,如果对app1和app2的更改也要求在大多数时间内对核心存储库进行更改,我会避免破坏您的存储库。
嵌套存储库,无论它们是使用子树,子模块还是(deity禁止)执行,只是.gitignore
定义会使工作流更复杂。像git bisect
和git log
这样的命令变得有点不那么有用了;跟踪历史和错误变得有点困难。新开发人员必须学习更多东西才能开始编码。从个人经验来看:仔细踏上这条道路。如果您的子回购密切相关,您将在一年内回到这里为其他想要破坏其项目的人写这个答案,就像一个麻烦的Git版本的Pay It Forward。