为多个客户分支项目



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

据我了解,有一些分支策略按Microsoft分类,例如开发隔离(它使 并发开发下一个版本、实验或错误修复(、发布隔离(启用并发 发布管理(等。

我是否可以利用分支来实现此目的以及如何利用?或者我应该为每个客户的项目创建单独的存储库?

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

Microsoft有Visual Studio Team Foundation Server Branching and Merging Guide,可用于选择分支结构。包括仅主,开发

隔离,功能隔离,发布隔离,服务和发布隔离,服务,修补程序,发布隔离...在您的情况下,项目的核心是相似的,但对于每个公司都有自己的个性化产品(逻辑/DB模型(,并且将来可能会独立发展。

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

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

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

此外,如果一个人或团队需要在本地机器中跨多个公司工作,保持本地环境清洁的一种方法是在Visual Studio中使用多个工作区

最新更新