如何在Git中维护"服务器版本"——仅更改配置文件的正确方法?

9

我有时候会使用Codeigniter,当我在本地站点上开发完成后,需要将文件迁移到服务器。 /config/ 文件夹中的所有文件都需要更改以匹配服务器设置。为了这些更改不需要进行整个提交,我是应该让Git完全忽略这些文件,还是有一种方式可以跟踪这些更改并在适当的时候使用Git应用它们?


你可以编写一个 git after_deploy 钩子来完成这个任务,怎么样? - robertmain
3个回答

8
您可以保留版本:
  • 两个“值配置文件”,其中包含每个环境的正确值
  • 一个模板配置文件,其中包含值占位符(例如,@@PORT_NUMBER@@)
  • 能够生成实际配置文件的脚本,具体取决于当前环境
  • 内容过滤驱动程序,在检出时触发脚本以生成正确的配置文件。

content filter driver

注意:这假定您的模板配置文件具有可识别的内容(过滤器没有文件的名称或路径)。有关git内容过滤驱动程序的限制,请参见“Git类似于svn的$URL$关键字扩展”。


1
config文件夹中创建两个文件夹,一个名为development,另一个名为production。现在将config.php、database.php等复制到这些文件夹中。当您在生产服务器上时,CodeIgniter将首先检查production文件夹中的文件。如果不存在,则使用config文件夹中的默认文件。如果您在开发环境中,则CodeIgniter将首先检查development文件夹。
如果要使任何配置文件与生产和开发环境相同,请将其保留在config文件夹中。
如果要设置环境,则在.htaccess文件中添加以下代码:
#This code for Development Environment
SetEnv CI_ENV development

并且

#This code for Production Environment
SetEnv CI_ENV production

1

这取决于您的需求。在我的公司,我们采用其他方法。 我们创建了几个环境(其中星号是内部项目名称):

  • devel - 站点运行在域名 **.local.com* 上
  • test - 站点运行在域名 test.*.company.com
  • beta - beta.*.company.com
  • production - 其他所有域名。

根据域名,我们自动切换配置。 基本上配置文件看起来像:

<?php
return array(
  '_env' => array(
    'devel' => array(
      // config for devel
    ),
    'production' => array(
      // config for production
    )
  )
);
?>

一些框架(例如Zend)在虚拟主机配置文件(或.htaccess文件)中设置环境名称。您应该查看:zend framework auto switch production staging test .. etc

您是否查看过CI文档?有一个章节专门介绍此问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接