gpt4 book ai didi

git - 哪个 git 工作流用于产品开发和产品定制

转载 作者:太空狗 更新时间:2023-10-29 12:54:33 27 4
gpt4 key购买 nike

我们使用 git-flow 开发软件框架已经有一段时间了。我们在单个存储库中有 masterdevelopment 分支。

最近,不同的客户开始对购买框架感兴趣,这需要为每个客户定制框架。

到目前为止,我们从 master 为每个客户分支了一个新的 feature-customerXYZ 分支,在那里进行了定制并在定制完成后保持分支打开(这防止“感染”来自定制的产品 master/development 分支)。

与此同时,框架本身的开发继续在产品 masterdevelopmentfeatures 上使用通常的 git-flow 工作流>、hotfixesrelease 分支。

在这种情况下会发生两种常见情况,我认为我们的工作流程无法对其进行最佳处理:

  1. feature-customerXYZ 分支的开发可以包含值得在产品 master/development 分支中实现的提交。由于 feature-customerXYZ 分支永远不会关闭,这些提交必须 rebasedcherrypicked 到产品分支,这需要额外的工作自定义并且容易出错。

  2. feature-customer 分支打开时发现的修补程序由 git-flow 通过 merge 打开的 hotfix 分支来处理仅修复产品 masterdevelopment 分支,但不会 merge 到开放的 feature-customer 分支(更准确地说:它们是未 merge 到所有打开的 feature 分支中)。

是否有一个 git 工作流程可以简洁地处理这个问题?是否有一个聪明的替代方案,而不是 mergecherrypickrebase 提交到产品 master/develop 或开放的 feature 分支?

最佳答案

虽然理论上可以像@VonC 提议的那样在专门的分支机构中维护客户偏差,但我敢说这在技术上非常困难并且无法扩展。

是的,你可以有一些工作(在 Jenkins 或其他东西中)会自动将你的偏差重新设置为 master 分支,但在工具方面,你只能靠自己了。至少要为以下情况做好准备:

  • rebase 将因冲突而失败 - 很简单,git 会让你知道
  • rebase 将成功,但结果将包含逻辑冲突 - 这需要良好的测试覆盖率,因为没有工具能够警告您

相反,我建议尽量减少偏差,然后将它们并排放在一个分支中。

如果您的项目由模块组成,这通常是可能的。您没有提及项目的任何细节,但大多数语言都支持某种形式的模块化,所以我希望这也是您的情况。

这样,您可以尝试将偏差的扩展点集中到最小模块(最好是一个),并在项目中包含这些模块的多个变体。

优点很明显:

  • 很简单
  • 您的 CI 很容易配置为一次构建所有模块(=客户偏差)
  • 您可以对它们进行测试,并轻松决定哪个测试是针对单个客户的,哪个是通用的,哪个是特定于偏离的功能而不是客户
  • 此外,您不必因此锁定您的分支模型,并且仍然可以使用 git-flow 或任何适合您需要的东西

唯一的缺点是,当您只为一个客户发布项目(带有标签和其他仪式)时,您也会为所有其他客户发布项目。这通常没什么大不了的,另一方面,它会激励在特征方面做出偏差,这很好。

为了尽量减少偏差,我推荐以下技术:

  • 一些偏差可以通过配置选项更好地表示
  • 其他的可能是特定于功能而不是特定于客户
  • 最好的一个,一些偏差可能会被拒绝——尽管这几乎不可能

只是总结一下 - 尽量减少偏差并将它们并排构建

将您的代码库分散到多个主分支(每个客户)将很快变得无法维护。

关于git - 哪个 git 工作流用于产品开发和产品定制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52428196/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com