首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何有效地管理多个客户端的产品代码,并为每个客户端进行单独的定制?

如何有效地管理多个客户端的产品代码,并为每个客户端进行单独的定制?
EN

Stack Overflow用户
提问于 2014-04-27 07:29:40
回答 3查看 1K关注 0票数 1

我刚在一家基于产品的公司开始了一项新工作,该公司允许客户定制。我在A产品上工作。

例如,产品A被出售给客户1和客户2。因此,每个客户端都请求自己的自定义。这些自定义必须与主流特性保持分离。但是,新的主流特性必须包含在每个客户端的副本中,同时保留它们自己的自定义。

客户端可以请求自定义,从简单的字段命名或添加/删除网格或报表列到添加/删除整个页面或模块。

我们刚刚开始使用SVN来管理我们的C#.net代码。

我的问题是:根据任何人的经验,在减少重复工作量的同时,管理所有这些需求的代码的最佳方法是什么?

  1. 所有客户的主流产品特性。
  2. 将每个客户的自定义分开,并在客户产品的整个生命周期内为客户保留它们。

分支可以解决部分问题,但是主流特性将不包含在客户端的版本中。

我希望这个问题足够清楚,请尽可能清楚地解释你的建议,也许举例说明。谢谢

EN

回答 3

Stack Overflow用户

发布于 2014-04-27 08:03:01

你可以用

  • 模块化设计(模块的core+set)和面向客户的最终产品将是单元的组合(可变集),在存储库中易于管理(每次定制都会产生上游单元的新分支):它是“供应商分支”+外部产品的组合。
  • Monolite统一代码,每个客户的自定义都收集在一些信任中(在版本\构建阶段自动创建)和更改(基于此信任)仅适用于客户端的通用代码。
  • 将以前的方法混合在一起--将每个客户端的更改保持在单独的分支中,将分支与主线开发同步(虚拟方式,需要强大的合并策略和准确性,可能需要在集成重构合并/google "Merge Hell“、"Big Bang Merge"/但在支持生命周期中期的更改阶段无缝工作)。

就我个人而言,我更喜欢方式1--这种情况我每秒钟都知道,产品每个客户都有(而且还没有从日志历史中重建它),以及这个产品在整个生命周期中是如何进化的。

票数 3
EN

Stack Overflow用户

发布于 2014-04-27 07:40:27

在我的公司我们也有同样的情况。我们的解决办法:

  • 在SvN中我们有结构 主干-主要产品版本分支.实际客户端版本和新主版本的未来分支

代码语言:javascript
复制
- client 1 (v1, v2 etc)
- client 2 (v1, v2 etc)
- main version branches tags - release for main product version and client tags

当我们开发主要产品时,我们将致力于主干(或未来的分支)。当客户端请求新功能时-我们将在客户端版本分支中开发此功能。发布后,我们制作了客户端标记(在标记中),如果客户端功能良好,并且我们决定将它包含到主版本中,我们将他的更改合并到主干。另一边--如果主干的主要功能必须包含到客户端版本--我们将合并到客户端分支。

我们有大约6个不同的客户端版本。实际上,我们是手动进行合并的,但很快我们就想让批处理自动完成这个过程。

票数 2
EN

Stack Overflow用户

发布于 2014-04-27 07:35:54

我建议不要为每个客户保留一个永远不同的分支机构。这将使任何更改都很痛苦,因为可能会有某个客户端的分支产生合并冲突。

从您给出的示例来看,这听起来更像是一个简单的允许更多配置的问题。您可以允许通过某种管理界面配置字段名、列、页和模块,并将配置存储在客户端。或者,如果您希望保留完全控制,并且不希望构建这样的UI,请将每个客户端的配置存储在您的终端上,并代表他们更新它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23320601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档