我有一个半大型的Web应用程序,我们在本地运行,我需要在另一个位置部署它。第二个位置需要对项目进行一些细微的修改(特别是化妆品)。您如何管理这些差异,以及您使用什么来向这样的客户分发网站和更新?
编辑: 现在我们的网络应用程序在内部运行,我们使用Cruise Control .NET和带有WDP的MSBuild构建。什么是部署到客户的好选择?我们不会为他们更新他们的网站,因此需要一个易于部署和更新的解决方案。
答案 0 :(得分:12)
分支您的代码。
希望您的代码是源代码控制的(如果没有,现在就开始!),您应该从基础分支到“Customer X”分支,并在该分支中进行轻微的修饰。然后只为该客户构建和部署该分支。
此外,如果更改足够小,您可以尝试使更改可配置。这样,您可以在任何地方部署同一个站点,只需更改配置即可满足客户的需求。差异越复杂,就越难以使它们可配置。
审阅评论后:请注意配置是否切实可行,但只有在更改次数较少的情况下,否则您将使用配置逻辑污染您的代码。 (感谢评论者)
所以:很多变化 - >分支(更易于维护),一些细微的变化 - >使可配置(更实用)。
答案 1 :(得分:2)
我们必须一直这样做。我们尝试概括并使版本之间的差异可配置。自定义的最常见原因是:
某些更改需要编写新模块。我们将它们编码在一个自定义库中,该库将在主应用程序中动态加载。
答案 2 :(得分:1)
我们通常通过数据驱动来实现这些差异。客户的差异只是一个不同的设置;未来的任何其他用户都可以在以后重复使用相同的“自定义”选项。
创建“一次性”不会缩放。
答案 3 :(得分:0)
由于这个原因,自定义补丁很痛苦。我们通常只在源控制系统中进行分支,并在使用脚本更新后手动应用更改。由于额外的开销,我们尽可能地阻止自定义补丁。