【问题标题】:Versioning machine specific configs版本控制机器特定的配置
【发布时间】:2011-08-12 10:54:48
【问题描述】:

我想在多个位置工作 - 例如 - 一个网站。 每台电脑都有自己的项目存储库(最好是 Mercurial,否则是 Git),但每台电脑都需要自己的配置设置来进行本地测试,比如 base_url。 对包含全局配置设置的配置文件进行版本控制的最佳方式是什么?

存储库详细信息:

  1. 使用 config.php 在 BitBucket 上回购:全局配置 + 实时服务器配置
  2. 使用 config.php 回购 pc A:全局配置 + 特定于 pc A 的配置
  3. 使用 config.php 回购 pc B:全局配置 + 特定于 pc B 的配置

当我签出 BitBucket 存储库时,我会获得完整的实时服务器配置。如果我需要在本地进行调整和测试,我会将实时设置更改为 PC 特定设置。然后修复一个错误或其他什么,提交并推送到 BitBucket。 此时,PC 特定设置将被推送到全局 BitBucket 存储库:这不是我想要的。

那么,正确完成这项工作的最佳方法是什么?

【问题讨论】:

    标签: git mercurial github bitbucket


    【解决方案1】:

    我对 php 不是很熟悉,但我假设您可以拥有一个全局 config.php 文件,其中可能包含(需要?)config.<hostname>.php 文件。这样所有配置文件都将受到版本控制,但不会有冲突。 PHP 应该有一些方法可以确定当前机器的主机名,然后加载相应的配置文件。

    生成的存储库布局可能如下所示

    /
    /config.php
    /config.web_server.php
    /config.pc_A.php
    /config.pc_B.php
    

    【讨论】:

    • 可能的解决方案,是的,但我真的不希望 config.pc_A.php 在我的 Live 服务器上浮动。我知道我可以像那样删除它,但是maaaaybe 有更好的东西可用。还是谢谢
    • 那么,为什么不为每台机器使用一个分支呢? git cherry-pick 允许您从其他分支/远程提取特定提交。我敢肯定 mercurial 也有类似的命令,虽然我用的还不够多,不知道它是什么。
    • 很好,会调查的。拉起来会有点困难(需要跟踪新的提交),但至少是一个干净整洁的环境。再次感谢
    • 实际上,像 Git rebase 这样的东西会起作用吗?分支 -> 第一次提交将是 pc 特定的 -> rebase -> 像往常一样提交
    • 根本不是一个糟糕的解决方案。您可以将 config.php 放在您的 PC 的单独分支上,当您想要修复某些内容时,创建新分支,然后将您的修复重新设置为例如大师和推高大师。
    【解决方案2】:

    我会将 config.php 设计为透明的。存储库本身不必关心它在什么环境中运行。我不知道您需要更改什么才能在您的情况下启动并运行它,但也许将 config.php 中的功能提升到一些设置中,然后由 config.php 读取。

    【讨论】:

    • 您的意思是像 Eric 建议的那样,将全局配置和特定于机器的文件分开在不同的文件中?可能,但并不理想(实时服务器上不需要的不同配置文件)。感谢您的回答!
    【解决方案3】:

    您需要的是一个涂抹清洁脚本,它可以根据您所在的机器更改配置。

    https://git-scm.com/docs/gitattributes

    https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#_keyword_expansion

    如果您想在单独的分支中跟踪每台 PC 的配置,请对配置进行更改,然后将您的更改合并到您在公共遥控器中公开的分支中,但忽略您的更改

    git merge --no-ff -s ours yourbranch
    

    从现在开始,您可以从您的分支合并,但您的配置更改将永远不会被合并,因为它已被认为已根据 DAG 合并。

    希望这会有所帮助。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 2011-11-01
    • 1970-01-01
    • 2012-09-23
    • 2011-03-28
    相关资源
    最近更新 更多