我们的windows交付件针对不同的客户有不同的配置文件和二进制资产集。现在,在打包之前,配置都是手工完成的,而且很容易出错。你如何看待为每个客户使用分支,并让包构建/脚本自动地使用主干来管理客户的分支?
与其说我关心可伸缩性,不如说我更关心尽快实现自动化。
整个打包的内容都在SVN中,但是SVN的分支和合并是如此微妙,以至于我不相信它在自动化的情况下会一致地工作。如果你们喜欢这个想法,我可能会尝试使用git-svn,因为它有望使合并不那么微妙。我们不一定要合并资产,因为它们是有组织的,这样安装程序就可以跳过不合适的目录树,但配置并不那么简单。
发布于 2008-11-11 16:31:18
我想这取决于有多少东西必须改变。对于配置文件,我喜欢将单个文件置于源代码控制之下,并使用构建脚本来设置特定于环境的(或者在您的情况下是特定于客户端的)项。
http://automaticchainsaw.blogspot.com/2008/02/automate-config-changes-for-different.html
对于二进制文件,它可能更多地与您拥有多少个二进制文件以及它们来自哪里有关。如果它们是代码编译的一部分,那么理想情况下,编译过程将创建所需的内容。如果它们是其他资源,例如图形,则可能在一个目录下有一组特定于客户的文件夹。构建脚本将根据传递给脚本的参数拉入正确的客户端文件夹。这基本上就是你在问题中提到的分支和合并的想法。
关于您稍后关于多行配置更改的评论-假设它是xml,您可以查看MSBuild社区任务中的XmlMassUpdate类。我自己没有用过,但它看起来可能是你需要的。
发布于 2008-11-11 17:30:59
您没有提到使用哪种语言,但您可以考虑使用conditional compilation
#If FirstCustomer Then
' <code specific to the FirstCustomer version>.
#ElseIf SecondCustomer Then
' <code specific to the SecondCustomer version>.
#Else
' <code specific to other versions>.
#End If发布于 2012-01-10 19:21:49
这可能发生在不同的客户、环境(QA、试运行、生产等)、地区(美国、欧盟、亚洲等)或者不同的应用程序类型(如果您在为移动客户端而不是web或桌面客户端提供服务时必须配置服务器)。
通常,人们要么手动维护配置文件(如您所提到的),这很容易出错,也不安全。或者像Pedro提到的那样,使用构建脚本在配置文件中“偷看”和“戳”出正确的值。这种方法还意味着,对于影响配置的每个代码更改,脚本也应该更改,这是不理想的。此外,调试和测试这些脚本(无论它们使用哪种语言)通常即使不是不可能,也很困难。
面对您的实际问题,我们开发了一个基于中央配置服务器的解决方案,该服务器将配置提供给客户端。服务器支持值的继承、更改的审核和版本控制、模板,甚至实时下推到客户端的运行时更改。
我们非常接近将此服务作为云托管配置管理解决方案发布。如果你想尝试一下,可以在http://woot.configchief.com上注册测试版
https://stackoverflow.com/questions/281350
复制相似问题