8

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

假设 repo 目录树如下:

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

我们希望将其拆分为三个存储库,一个具有核心结构(libs 和应用程序目录),另外两个具有应用程序目录。

如果我像这样使用 git subtree 进行拆分,我可以在每个部分中单独使用 git flow 还是必须在全局范围内使用它?

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

4

1 回答 1

6

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

如果这些问题的答案是“是”,我认为将它们视为多个项目,每个项目都有独特的流程。但是,如果对其中任何一个的回答是“否”,我会避免破坏您的项目。事实上,如果对 app1 和 app2 的更改在大多数情况下也需要更改核心存储库,那么我将完全避免破坏您的存储库。

嵌套的存储库,无论它们是使用子树、子模块还是(禁止)仅.gitignore根据定义执行,都会使工作流程更加复杂。命令喜欢git bisect并且git log变得不那么有用;跟踪历史和错误变得有点困难。新开发人员必须多学习一点才能开始编码。个人经验:谨慎走这条路。如果您的子存储库紧密交织在一起,那么您将在一年后回到这里,为其他希望破坏他们的项目的人写下这个答案,就像一个有问题的 git 版本的 Pay It Forward。

于 2012-08-17T14:54:17.527 回答