octava/branching

根据当前git分支自动更改数据库。

4.4.1 2021-12-03 13:31 UTC

README

Symfony BranchingBundle。根据当前git分支自动更改 mysql 数据库。

SensioLabsInsight

Bundle版本与支持的symfony版本相关联。

安装

通过composer下载bundle

composer require octava/branching

然后,在项目中的app/AppKernel.php文件中添加以下行以启用bundle

<?php
// config/bundles.php
return [
    // ...
    Octava\Bundle\BranchingBundle\OctavaBranchingBundle::class => ['all' => true],
    // ...
}

创建新的分支 git branch featuregit checkout -b feature

之后运行 'app/console' 命令,bundle将自动创建和复制新的数据库。

确保,您的mysql连接有创建新模式的权限。Bundle使用默认的symfony连接参数 'database_host' 等。

配置

"BranchingBundle"的默认配置

# config/packages/octava_branching.yaml

octava_branching:
    switch_db:
        enabled: true
        connection_urls:
            - '%env(resolve:DATABASE_URL)%'
            - '%env(resolve:BACKEND_DATABASE_URL)%'
        ignore_tables:
            - error_log
            - resend_log
    alter_increment_map:
        default:
            'UserBundle:User':
                test:
                    start: 50000000
                    step: 1000
                dev:
                    start: 8000000
                    step: 1000
            'BalanceBundle:BalanceOperation': ~
            'partner': ~

开发配置

#config/packages/dev/octava_branching.yaml
octava_branching:
    switch_db:
        enabled: true

Nginx示例

显然,您的托管必须支持类似于 *.test.project.com 的DNS名称。以下是不同分支的nginx配置示例

server {
    #...
    
    if ($branch = "") {
        set $branch "master";
    }
    server_name ~^(www\.)?(?<branch>.+)\.test\.project\.com$;
    root /www/test.my.project.com/project/$branch/web;
    
    #...

Twig扩展

当前分支

  • 获取当前分支,用于生成项目标题
#your twig template file

{{ octava_current_branch() }}

对于master分支返回 master (dev) 字符串。