Mercurial - 保持部署和开发存储库

时间:2010-07-19 22:01:12

标签: php mercurial

我正在开发一个PHP网站,我刚刚为我的运行环境添加了一个开关 - development表示它在我的本地站点上运行,而production正在运行住在网络主机上:

<?php
define('ENV','development');
//or
define('ENV','production');

我在VC下使用Mercurial的网站,通常只使用hg push部署我的网站(服务器也运行hg),但是,添加此切换后,“生产”网站将始终与“开发”网站的实际部署版本将始终设置为production而不是development

这意味着我的部署过程来自

  1. 开发
  2. 测试
  3. hg commit -m "Made changes"
  4. hg push
  5. ssh host hg update
  6. 转到1.
    1. 开发
    2. 测试
    3. hg commit -m "Made changes"
    4. development更改为production
    5. `hg commit -m“dev - &gt; prod”
    6. hg push
    7. ssh host hg update
    8. (稍后:)更改production - &gt; development
    9. hg commit -m "prod -> dev"
    10. 转到1.
    11. 这显然不是很好。

      是否有某种方法可以保持一个与另一个隔离,以便将实际网站设置为production并将我的本地副本设置为development

3 个答案:

答案 0 :(得分:3)

没有开关,而是拥有开发分支和生产分支。

hg up prodbranch 
hg merge -r devbranch
hg push
ssh yourserver hg update prodbranch

答案 1 :(得分:3)

如果你有一个Apache网络服务器,你可以在server / vhost / per-directory / .htaccess config中设置它:

SetEnv Deployment development

或在制作中

SetEnv Deployment production

在你的脚本中使用:

define('ENV',$_ENV['Deployment'])

我假设(通常是)实际的webserver / virtualhost配置不在正常代码之内。

http://httpd.apache.org/docs/2.2/mod/mod_env.html#setenv

答案 2 :(得分:0)

您是否考虑过不将配置文件置于版本控制之下?