什么是正确的方式来维护“服务器的版本” – 只有configuration文件改变,在Git?
我有时使用Codeigniter,在本地站点上完成开发之后,我需要将这些文件迁移到服务器。 /config/
文件夹中的所有文件都需要更改以匹配服务器设置。 对这些更改做出完整的承诺是不对的,我只是简单地让Git忽略这些文件,还是有办法跟踪这些更改并在适当的时候将它们应用于Git?
你可以保持版本:
- 两个“值configuration文件”,每个环境都有正确的值
- 一个模板configuration文件,里面有值占位符(例如
@@PORT_NUMBER@@
) - 一个能够根据当前环境生成实际configuration文件的脚本
- 一个内容filter驱动程序 ,在结帐时,将触发脚本,以生成正确的configuration文件。
注意:假设你的模板configuration文件有一个可识别的内容(filter没有文件的名字或path)。 有关git内容filter驱动程序的限制,请参阅“ Subversion的$URL$
关键字扩展的Git等效 ”。
这取决于你的需求。 在我们公司,我们使用其他方法。 我们已经创build了几个环境(asterix是内部项目名称):
- devel – 网站在域**上运行local.com *
- testing网站运行在域名testing。*。company.com
- beta – beta。*。company.com
- 生产 – 其他领域。
根据域名我们自动切换configuration。 基本configuration文件如下所示:
<?php return array( '_env' => array( 'devel' => array( // config for devel ), 'production' => array( // config for production ) ) ); ?>
一些框架(AFAIR Zend)在虚拟主机configuration(或.htaccess)中设置环境名称。 你应该看看: zend框架自动切换生产分级testing等
你看过CI文档吗? 有一个关于它的部分 。
在config
文件夹中创build两个文件夹。 一个叫做development
,另一个是production
。 现在将config.php,database.php等复制到这些文件夹中的每一个。 现在,当您在生产服务器上时,CodeIgniter将首先检查文件的production
文件夹。 如果不存在,那么它使用config
文件夹中的默认文件。 如果你在开发环境,CodeIgniter将首先检查development
文件夹。
如果您想保留任何configuration文件与生产和开发环境相同,请将其保存在config
文件夹中。
如果要设置环境,请在.htaccess文件中添加以下代码:
#This code for Development Environment SetEnv CI_ENV development
和
#This code for Production Environment SetEnv CI_ENV production