一个或两个存储库用于新变体?

One Repository or Two for new variant?

我们有一个处于维护模式的 C 代码库,它支持针对给定电路板架构的多种构建特性。

我们正在启动该产品的第 2 代开发,它使用了新的电路板架构。第 2 代将取代第 1 代(我们不再生产任何第 1 代板)。第 2 代将需要大量代码才能完全重写。我会说它的50%。 OTOH,有些代码将保持不变。使构建模块化以支持这两种类型对我们来说是不值得的。所以我们基本上要将项目永久地分成两个产品。

我们目前在我们的存储库中使用一个方案,有一个 master 分支用于生产版本,一个 testing 分支用于积累 "blessed" 工作,以及用于不同开发单元的单独分支.

所以我们可以:

  1. 创建一个新的 git 存储库,将旧代码复制到其中,然后起飞,看看未来会把我们带到哪里。
  2. 保留相同的存储库,但只需添加更多分支。

我看到的 Pros/Cons 是:

  1. 两个存储库
    • 优点:分支保持简单。如果我需要比较
    • ,则强制为每个加载的存储库
    • 缺点:不能在两者之间挑选(虽然我们很少这样做)
  2. 一个存储库,不同的分支
    • 优点:代码都在同一个分支中,也许能够利用 git
    • 的一些 "cross branch" 特性
    • 缺点:必须为两个不同的事物注释 master 和 testing 分支以消除它们的歧义

我正在寻找 advice/experience 可以使人偏向某一方向的东西。

出于您提到的原因,我会选择单个存储库。很可能会有一个版本的修复程序,您希望将其挑选到另一个版本中。

您的分支不会很复杂,只需像这样为任何第 1 代分支和标签添加前缀。

  • gen1/master
  • gen1/testing
  • gen1/some_feature

最后,我们拆分了存储库。我在 Programmers 上发布了类似的问题并得到了 some really good answers there