我刚刚将一个大型的svn存储库迁移到git并开始使用gitflow。它就像一个魅力,但现在我正在考虑将那个大仓库分成几个较小的回购。
让我们假设存储库目录树如下:
/repo
- libs
- apps
-- app 1
-- app 2
我们希望将其拆分为三个存储库,一个具有核心结构(libs 和 apps 目录),另外两个包含 apps 目录。
如果我使用 git子树像这样拆分,我是否能够在每个部分中单独使用 git flow,或者我必须全局使用它?
PS:这是我在stackoverflow中的第一个问题,请善待:)
我不使用 git flow,但我认为答案取决于你的模块化程度。是否可以在不部署 app1 和 app2 的情况下部署核心结构?是否可以相互独立地部署 app1 和 app2?您的开发团队是否足够庞大和复杂,足以将它们视为独立的工作流程?
如果这些问题的答案是"是",我认为将它们视为多个项目,每个项目都有独特的流程。但是,如果其中任何一个的答案是"否",我会避免破坏您的项目。事实上,如果对 app1 和 app2 的更改在大多数时候也需要对核心存储库进行更改,我会完全避免破坏您的存储库。
嵌套存储库,无论是使用子树、子模块还是(神禁止)根据定义.gitignore
执行,都会使工作流更加复杂。像 git bisect
和 git log
这样的命令变得不那么有用了;跟踪历史记录和错误变得更加困难。新开发人员必须学习更多知识才能开始编码。从个人经验来看:小心走这条路。如果你的子存储库紧密交织在一起,你将在一年后回到这里,为其他想要破坏他们项目的人写这个答案,比如一个陷入困境的 git 版本的 Pay It Forward。