什么是正确的方式来维护“服务器的版本” – 只有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