git项目特定分支的不同数据库

时间:2011-09-02 15:47:47

标签: git symfony1

我们有一个项目的几个分支,它们共享大约一半的代码,并使用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')) ?>'

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

1 个答案:

答案 0 :(得分:3)

通常在分支机构中管理具有不同内容的相同文件(无需处理合并问题)通常是:

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

  • 或使用filter driver

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

smudge/clean

脚本和模板文件在分支之间始终相同(没有合并问题) 生成的config/databases.yml仍然是私有的,而不是版本化的。