我开始质疑我是否遵循我的Git策略在master和dev之间的最佳实践,因为部署并不像它应该的那样直接。
我有一个主人和开发分支,有一些环境差异。在大多数配置不同的地方(即连接字符串,应用程序设置等),我已经能够将这些不同的内容抽象到Git之外的环境配置文件中。从主服务器切换到开发人员时,团队中的开发人员会复制并粘贴到正确的环境配置中,一切正常。
但是,有些地方代码本身在master和dev之间有所不同。最具体的例子是在Ninject(DI)配置文件中,该文件在使用生产电子邮件服务和开发电子邮件服务之间有所不同,因此客户从不会意外地通过电子邮件发送。
我们考虑使用#if DEBUG
预处理器,但这不能防止在“发布”模式下运行dev分支的开发人员。
当将dev合并到master时,跨分支的代码差异变得难以管理,因为每次我们发现自己手动确保主代码永远不会被覆盖。为了解决这个问题,我们最终创建了一个“merge”分支,它已经与生产提交一起设置并忽略了冲突的dev提交。
问题变得使所有这些分支保持同步并以正确的顺序合并/发出拉取请求,以确保合并正确的代码。
如果可能,有人可以建议更好的“策略”来管理这些分支,那么部署就像将dev合并到master中一样简单吗?
答案 0 :(得分:0)
对于配置文件,您需要维护多个值文件(value.master
,value.branch1
,...)和每个配置一个模板文件,以便自动生成实际的配置文件。 />
请参阅“Do not overwrite config file on Azure using GIT”:它使用内容过滤器驱动程序。
对于代码,如果可以,请在同一代码中维护不同的执行路径,以避免管理合并。