如何在git repos中保留CodIgniter应用程序和配置?

时间:2016-12-23 07:16:00

标签: php git codeigniter github bitbucket

有人可以告诉我应该遵循哪种工作流程来保持我的应用程序源和配置在Git中跟踪?我希望将我的配置与我的源分开是因为有一个用于开发的配置,另一个用于生产环境,第三个用于本地测试。

4 个答案:

答案 0 :(得分:2)

为配置文件设置一个repo并不是闻所未闻(只需确保git repo 没有公共访问(所以,除非你启用了私有存储库,否则不是github)。你最终了有代码的repo和配置文件的repo,有时由不同的团队(比如部署团队)维护。

你遇到的问题是,就我所知,git并不特别喜欢在同一级别拥有多个回购。

我对CI一无所知,但我认为它将配置文件存储在application/config中。

我能想到的两个选择:

  • 您可以将所有application/config转换为git repo,并从主开发代码库中转发该文件夹。
  • 如果将整个文件夹转换为repo是不可行的(比如,某些配置文件实际上属于应用程序仓库),请在系统中的其他位置维护一个单独的repo文件夹,并将必要的配置文件符号链接到{{1 (和你的代码仓库中的那些符号链接gitignore)

答案 1 :(得分:0)

无需使用单独的Git存储库。 CodeIgniter支持environments

的想法
  

开发人员通常需要不同的系统行为,具体取决于应用程序是在运行环境还是生产环境中运行。例如,详细错误输出在开发应用程序时很有用,但在“实时”时也可能会出现安全问题。

     

环境常量

     

默认情况下,CodeIgniter附带的环境常量设置为使用$_SERVER['CI_ENV']中提供的值,否则默认为“development”。

为每个服务器进程设置CI_ENV环境变量,以告知CodeIgniter您所在的环境。这可能涉及使用Apache的SetEnv,shell export或其他机制。

然后您可以设置environment-specific configuration files

  

要创建特定于环境的配置文件,请在application / config / {ENVIRONMENT} / {FILENAME}中创建或复制配置文件.php

     

例如,要创建仅限生产的config.php,您可以:

     
      
  1. 创建目录application / config / production /
  2.   
  3. 将现有的config.php复制到上面的目录
  4.   
  5. 编辑application / config / production / config.php,使其包含您的生产设置
  6.         

    当您将ENVIRONMENT常量设置为'production'时,将加载新的仅限生产的config.php的设置。

此外,您可能希望直接从环境加载某些设置,如The Twelve-Factor App所述。 (这不是我以前见过人们对CodeIgniter所做的事情,但一般来说这是一个有用的想法。)

例如,将API密钥或数据库连接信息保留在配置文件之外,或者在配置文件中保留开发友好值并使用从环境变量加载的值覆盖它们可能是有意义的。

答案 2 :(得分:0)

An answer from a similar question会帮助您,SO用户@dwilkins会回答 dwikins先生的回答简单明了,有效。他建议gitignore任何你不想要的东西,但记得创建“conf.sample”样本文件 Mr @ alex-stuckey评论添加README文件以指导其他团队成员使用“示例”文件。

答案 3 :(得分:-2)

当我是系统管理员并且我们制作了依赖于配置预设的脚本时,使用了以下工作流程。 基本上,主脚本始终是相同的,脚本的操作将取决于将从主分支挂起的配置文件,如下所示:

| ---- Script.py

| ---- config_template.cfg

从Master那里我们会选择一个看起来像这样的分支

Mimulation_machine

| ---- Script.py

| ---- simulation.cfg -------------->这是修改后的配置文件

工作流程是切换到master并创建一个新分支,最终将保存配置文件。重要的是,分支永远不会合并回主人。这可能不是最好的答案,也不是最正确的答案,但它有效,并允许我们通过简单的结账切换到不同的配置。

请注意,这是我们真实情况的一个过于简单的版本,我们有一个由gitignores构成的复杂结构。