我正在使用mercurial进行网站开发。我“想”我正确使用它。
我在我的开发机器上开发,定期提交。我会定期将我的提交推送到托管的site-dev存储库。
如果设置了我希望它们用于实际站点的方式,我会从我的开发机器推送到托管站点 - 实时存储库。然后我从该存储库下载到实时服务器上。
但是,需要进行一些更改(将目录从localhost更改为www.example.com,更改数据库连接的内容等)。
我所做的是在我的直播机器上进行了这些更改,然后将它们推回到站点实时存储库。我不知道为什么我这样做,真的,但至少有一个变更集坐在那里进行必要的配置更改。
我不知道怎么做是管理这个过程。我有点失去了承诺,用hg推拉。我是一个单一的开发人员,甚至还没有完成合并。
是否有某种方法可以确定特定的变更集,并且只是应用它,希望甚至在我从回购下载到实时服务器之前?
我想你可以从我的问题中看出,我现在对hg和工作流程有点过头了;)
答案 0 :(得分:4)
这是我的理解:
您基本上要做的是拥有开发,登台和部署环境。您使用“开发”存储库进行开发,在暂存环境中对其进行测试,然后一旦满意,将这些更改提取到部署存储库中。 当您从登台到部署时,您需要更改您的环境/配置数据。
我的看法是你根本不应该改变配置。
您应该拥有配置文件,以便拥有
基本配置文件
basic.conf
特定于环境的覆盖
basic.dev.conf,basic.staging.conf和basic。 deployment.conf
使用环境变量:
应通过环境来定义基本配置数据的覆盖 特定变量:APP_ENV:dev或staging或deploy
这样您就可以在不更改配置信息的情况下根据环境覆盖配置。
每次将代码从开发阶段提升到分段到部署时,依靠对配置文件进行更改都不是一个好主意。
答案 1 :(得分:2)
我会将实时服务器保留在版本控制之外。这意味着我将有一个小的“安装”脚本从存储库中提取更新,删除任何不必要的开发文件,并应用正确的配置文件。开发和生产配置文件都应该受版本控制。