不同的数据库为Git项目

问题描述:

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

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

反正,你怎么解决呢?

+0

你能澄清 - 什么是分支?它们是不同的版本,将永远保持完全分离,还是在某个时刻将它们合并回来?你是否正在为新功能开发而分离,然后再转向稳定版本? –

什么通常与不同的内容管理同一个文件之中分支(而无需处理合并问题)做的是:

  • 使用merge driver(如keepmine),以始终保持在合并过程中的文件的本地版本

  • 或使用filter driver有:

    • 一个config/databases.yml.tpl版本
    • 一个办法让回到正确的值取决于环境(如当前分支的名称),这将结合
    • 一个“smudge”脚本(版本),在结账时,模板和正确的价值观为了产生一个完整的config/databases.yml

smudge/clean

的脚本和模板文件总是从树枝间(没有合并问题)相同。
产生的config/databases.yml仍然是一个私人的,而不是版本。