就像SO上这个问题描述的场景: http://stackoverflow.com/questions/928646/how-do-i-tell-git-to-always-select-my-local-version-for-conflicted-merges-on-a-sp
有两个分支,每个分支使用不同的配置,例如:
config.txt (on release branch):
database = 10.9.8.7
config.txt (on develop branch):
database = 192.168.0.1
当需要把develop分支的功能合并到release分支时,不希望config文件被合并;
有以下几种解决方案:
不知道大家有没什么建议?
参考: http://stackoverflow.com/questions/928646/how-do-i-tell-git-to-always-select-my-local-version-for-conflicted-merges-on-a-sp
http://stackoverflow.com/questions/2250040/using-github-to-host-public-git-repositories-whilst-ensuring-that-sensitive-data#
http://blog.miniasp.com/post/2014/12/23/Git-Advanced-Assume-Unchanged-Skip-worktree.aspx
环境不同的配置文件的话放在不同的文件中比较容易维护
代码里面做环境判断(常见的方式有IP、hostname、环境变量等)分别读取不同的配置
进一步的方案是专门有配置中心负责下发配置,有驻守精灵负责找配置中心拉配置、缓存配置、配合中心更新配置等
总之个人觉得通过分支不同来维护不同环境的配置事倍功半……如果再加上测试环境、预发布环境,甚至可能还有单元测试环境、沙盒环境等等,3份以上不同配置如果还是用分支维护的话基本上就崩溃了吧……一定要搞的话推荐模仿
phpunit.xml.dist
的形式,gitignore掉config.txt
,然后维护正式的config.txt.dist
,代码里优先读config.txt
,然后读config.txt.dist