使用mercurial管理Web开发和部署之间差异的最简单方法是什么?

时间:2010-10-26 22:12:05

标签: deployment mercurial workflow

我正在使用mercurial进行网站开发。我“想”我正确使用它。

我在我的开发机器上开发,定期提交。我会定期将我的提交推送到托管的site-dev存储库。

如果设置了我希望它们用于实际站点的方式,我会从我的开发机器推送到托管站点 - 实时存储库。然后我从该存储库下载到实时服务器上。

但是,需要进行一些更改(将目录从localhost更改为www.example.com,更改数据库连接的内容等)。

我所做的是在我的直播机器上进行了这些更改,然后将它们推回到站点实时存储库。我不知道为什么我这样做,真的,但至少有一个变更集坐在那里进行必要的配置更改。

我不知道怎么做是管理这个过程。我有点失去了承诺,用hg推拉。我是一个单一的开发人员,甚至还没有完成合并。

是否有某种方法可以确定特定的变更集,并且只是应用它,希望甚至在我从回购下载到实时服务器之前?

我想你可以从我的问题中看出,我现在对hg和工作流程有点过头了;)

2 个答案:

答案 0 :(得分:4)

这是我的理解:

您基本上要做的是拥有开发,登台和部署环境。您使用“开发”存储库进行开发,在暂存环境中对其进行测试,然后一旦满意,将这些更改提取到部署存储库中。 当您从登台到部署时,您需要更改您的环境/配置数据。

我的看法是你根本不应该改变配置。

您应该拥有配置文件,以便拥有

  1. 基本配置文件

      

    basic.conf

  2. 特定于环境的覆盖

      

    basic.dev.conf,basic.staging.conf和basic。 deployment.conf

  3. 使用环境变量:

      

    应通过环境来定义基本配置数据的覆盖   特定变量:APP_ENV:dev或staging或deploy

  4. 这样您就可以在不更改配置信息的情况下根据环境覆盖配置。

    每次将代码从开发阶段提升到分段到部署时,依靠对配置文件进行更改都不是一个好主意。

答案 1 :(得分:2)

我会将实时服务器保留在版本控制之外。这意味着我将有一个小的“安装”脚本从存储库中提取更新,删除任何不必要的开发文件,并应用正确的配置文件。开发和生产配置文件都应该受版本控制。