【问题标题】:Different versions of the same configuration file in different branches同一配置文件在不同分支的不同版本
【发布时间】:2012-05-12 16:57:53
【问题描述】:

我们正在使用虚拟主机 dotCloud 来运行我们的一些应用程序。 dotCloud 直接从 git 存储库部署应用程序,并从该存储库读取名为 dotcloud.yml 的配置文件以配置和运行堆栈。

我们有两个分支(一个生产,一个暂存),它们是同一个 repo 的一部分,它们推送到单独的 dotCloud 实例。运行每个实例的 dotcloud.yml 文件存在细微差别。

管理此 dotcloud.yml 文件的最佳方法是什么?目前,我们只是确保 dotcloud.yml 在每个分支上都是正确的,但是当我们将更改从 staging 合并到 master 时,它会不断被覆盖。

【问题讨论】:

  • 您能描述一下dotcloud.yml 中您的生产分支和暂存分支之间的这种“细微差别”吗?
  • 我猜是环境变量之类的。

标签: git dotcloud


【解决方案1】:

你可以:

  • 版本 a dotcloud.yml.template
  • 版本为dotcloud.yml.value.proddotcloud.yml.value.staging,其中包含每个环境的相关值。
  • 根据 dotCloud 实例对负责构建正确的 dotcloud.yml 文件(不再版本化)的涂抹脚本进行版本控制。

您可以在.gitattribute file(也有版本)中将该涂抹脚本声明为filter content driver

在任何 git checkout 中,都会调用 smudge 脚本,如果它识别出 dotcloud.yml.template 内容,则会构建正确的 dotcloud.yml 文件。

【讨论】:

    【解决方案2】:

    你可以:

    • dotcloud.yml 添加到.gitignore,有两个单独的文件用于暂存和生产(例如dotcloud.yml.stagingdotcloud.yml.production),它们都存在于您的git 存储库中,设置符号链接dotcloud.yml → dotcloud.yml.production,并使用@987654326 推送@(--rsync 标志将覆盖推送机制检测,并且将启动 rsync 机制,而不是 git 机制);
    • 使用相同的dotcloud.yml 文件,但依靠不同的机制(例如dotcloud varpostinstall 脚本)在生产和暂存行为之间切换。

    【讨论】:

    • 请注意,新的 (0.9) dotcloud cli 工具没有 --all 标志 dotcloud push 所以这个答案不起作用。
    • 你是对的;它已更改为 --rsync。我更新了我的答案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 2021-02-18
    • 2015-08-22
    • 2020-07-08
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多