为多个客户分支项目

时间:2017-08-05 00:07:24

标签: tfs version-control branching-and-merging

我们有一个拥有多个客户的项目。假设应用程序名称是Ali-Systems。 Foo公司将拥有 Ali-Systems Foo ,Bar公司将拥有 Ali-Systems Bar 等。所有版本的结构几乎相同。但他们的逻辑是不同的。例如,所有版本都有BillIssue方法,但其逻辑可能不同。要么如何计算甚至他们的数据库模型之间的差异(我们使用ASP.Net MVC实体框架)

据我所知,微软有一些分类策略,如开发隔离(它可以实现) 并发开发下一个版本,实验或错误修复),Release Isolation(支持并发) 发布管理)等。

我可以为此目的利用分支机构以及如何进行分支?或者我应该为每个客户的项目创建单独的存储库?

注意:实际上我想将项目的基础克隆到一些永远不会再次合并的派生项目中。但我们必须能够为所有派生项目添加功能(可能在另一个分支的帮助下)

1 个答案:

答案 0 :(得分:1)

Microsoft有Visual Studio Team Foundation Server Branching and Merging Guide,可用于选择分支结构。包括Main only,开发隔离,功能隔离,Release隔离,Servicing和Release隔离,Servicing,Hotfix,Release isolation ......

在您的情况下,项目的核心是类似的,但每个公司都有自己的产品个性化(逻辑/数据库模型),并且可能在未来独立发展。

使用一些分支结构,主要限制是它成为解决错误和全局变化的维护噩梦。

例如,如果要将一个公司的更改合并到另一个公司非常复杂,则需要单独重新测试每个版本。此外,对于错误跟踪,一个团队将解决其版本中的错误,另一个团队将不得不将该更改与他们不完全理解的版本合并。

  

支持此类开发方案建议共享可扩展核心   和数据模型,可从上层自定义配置   应用层。这个核心应该用作每个核心的基础   客户/公司特定的定制和单独维护   团队(每个公司)。它将包括一些管理复杂性   因为多个项目经理可能需要相同的资源   团队,但它是一个使架构一致,控制的好方法   整个过程并保持版本同步。

此外,如果一个人或团队需要在本地机器中跨多个公司工作,那么保持当地环境清洁的一种方法是Using multiple workspaces with Visual Studio