代码之家  ›  专栏  ›  技术社区  ›  benbotto

多个网站,单个代码库:git fork?

  •  1
  • benbotto  · 技术社区  · 7 年前

    我工作的一个web应用程序是一个旧的遗留系统,最近已经迁移到git。这个系统相当大。两个不同的网站运行了相同的软件;然而,代码的许多部分使用简单的控制语句(如果site==“this”{do custom business logic;})执行特定于站点的操作。这种策略已经使用了十多年,而且越来越难看。

    由于代码库的很大一部分在这两个站点之间存在分歧,我们正在考虑分叉存储库。棘手的是,大多数代码是在两个系统之间合法共享的。因此,如果在共享代码中修复了一个bug,那么似乎很难将其修复到fork中。例如,我们可以使用补丁。或者,我们可以在分叉点创建一个分支,选择更改,然后使用pull请求。但这两种方法对我来说都过于复杂,我想尽量减少复杂性。

    现在是问题。

    作为旁白,我将再次强调,这是一个大型遗留系统。我们一直在努力改进系统,做了一些事情,比如将共享的JavaScript模块拉到它们自己的存储库中,并在NPM中发布这些模块。(我们遵循迈克尔·费瑟书中的指导原则, 修改代码的艺术 .) 尽管如此,改进大型遗留系统是一个缓慢的过程。我们希望尽量减少重构,并保持缓慢的改进。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Mark Adelsberger    7 年前

    你知道有大量重复的代码将是一个问题。最有可能的是,一旦这些站点在单独的回购中生存,它们就会以不同的方式出现分歧,使得交换补丁变得足够困难,以至于无法正确完成,这不是你最终要做的事情——这意味着你最终会通过两个单独的开发工作来修复每个bug。我无法想象与当前“基于站点ID的分支”方法相关的问题会比这更糟糕。

    将公共代码与发散代码分离的方法-不必担心(目前)拆分单个公共模块,但只需首先转向3-repo解决方案-您可以比您想象的更快地实现。