【问题标题】:Different databases for specific branches of git projectgit项目特定分支的不同数据库
【发布时间】:2011-09-02 15:47:47
【问题描述】:

我们有一个项目的几个分支,它们共享大约一半的代码,并使用 git checkout 同时开发它们。现在,当模型变得如此不同时,问题就出现了,以至于不再可能为他们的开发保留相同的数据库。我可以在 config/databases.yml 中专门为每个分支指定数据库名称,但它没有被跟踪。另一种解决方案是使用分支名称跟踪一些外部文件,例如 config/branch.txt,并在 config/databases.yml 中引用它:

all:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn: 'pgsql:host=localhost;dbname=<?php echo file_get_contents (realpath(__DIR__ . '/branch.txt')) ?>'

无论如何,你如何解决这个问题?

【问题讨论】:

  • 你能澄清一下 - 什么是分支?它们是永远保持完全分离的不同版本,还是在某个时候将它们重新合并在一起?您是否正在为新功能开发分支,但随后又切换回稳定版本?

标签: git symfony1


【解决方案1】:

在分支之间管理具有不同内容的同一文件(无需处理合并问题)通常要做的是:

  • 使用merge driver(如keepmine)以便在合并期间始终保留文件的本地版本

  • 或使用filter driver 和:

    • config/databases.yml.tpl 版本化
    • 一种根据环境取回正确值的方法(如当前分支的名称)
    • 一个“smudge”脚本(版本化),它将在结帐时结合模板和正确的值以生成完整的config/databases.yml

脚本和模板文件从一个分支到另一个分支总是相同的(没有合并问题)。
生成的 config/databases.yml 仍然是私有的,没有版本化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-02
    • 2023-03-02
    相关资源
    最近更新 更多