【问题标题】:How to keep CodIgniter application and config in their own in git repos?如何在 git repos 中保留 CodIgniter 应用程序和配置?
【发布时间】:2017-09-11 14:30:57
【问题描述】:

谁能告诉我应该遵循什么样的工作流程来在 Git 中跟踪我的应用程序源代码和配置?我想将我的配置与源代码分开是因为有一个配置用于开发,另一个用于生产环境,第三个用于本地测试。

【问题讨论】:

  • 我认为您的配置文件不应该在 GitHub 中进行版本控制。找到其他方法来完成你想要的。
  • 你应该在你的 git-repo 中忽略真正的配置文件,只需要一个配置示例(在文件上附加 -example.php 之类的东西),在 git repo 中没有任何敏感信息。然后任何开发人员/环境都可以复制该配置,添加缺少的/环境特定信息而不会出现任何问题。
  • 还有其他方法吗?为什么我希望在跟踪中这样做是因为当在配置中添加任何内容时,团队成员将在他们的拉取请求中收到相应的更改
  • 我关心的是变量、常量、自动加载、配置目录中的更改,而不是 database.php

标签: php git codeigniter github bitbucket


【解决方案1】:

为配置文件创建一个 repo 并非闻所未闻(只要确保 git repo 确实 NOT HAVE PUBLIC ACCESS (所以,除非你启用了私有 repos,否则不是 github)。你最终会带有代码仓库和配置文件仓库,有时由不同的团队(例如部署团队)维护。

您遇到的问题是,据我所知,git 并不特别喜欢在同一级别拥有多个存储库。

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

我能想到的两个选项:

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

【讨论】:

    【解决方案2】:

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

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

    环境常数

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

    为每个服务器进程设置CI_ENV 环境变量,告诉CodeIgniter 你在哪个环境。根据您的堆栈,这可能涉及使用 Apache 的 SetEnv、shell export 或其他机制。

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

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

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

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        大师

        |----Script.py

        |----config_template.cfg

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

        模拟机

        |----Script.py

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

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

        请注意,这是对我们实际情况的过度简化版本,我们有一个由 gitignore 等组成的复杂结构。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-11-10
          • 1970-01-01
          • 2011-12-01
          • 2014-10-17
          • 2018-05-14
          • 2016-06-23
          • 2013-07-05
          • 2013-04-06
          相关资源
          最近更新 更多