在Drupal8中使用Drush+Features模块通过Git迁移配置

在Drupal8中使用Drush+Features模块通过Git迁移配置

前提:已安装features模块,git版本管理和drush

在团队协作中,项目一般由多个开发测试人员组成,其中可能包括,前端设计,后端开发,测试人员和客户,那么在项目开发不断的推进,各种功能不断的完善,各个环境数据结构需要同步,下图是一个通用的开发测试环境,如图:

1495273154633500.png

本地开发环境-dev-x:是开发人员各自的环境,独立的数据库 
集成测试环境:测试环境是给项目内部人员测试的环境 
正式环境-Pro或者Uat客户内部测试环境:是给客户在正式发布之前进行内测的环境 
Git远程仓库:是项目代码的最新版本,包括项目分支

实例

一、在dev-1新建内容类型-[training]

1495273154262946.png

二、使用features把功能导出成code(模块)

1、进入到features管理页面:admin/config/development/features 
在当前页面中,自动显示检测到的新建的内容类型

1495273154443135.png

2、默认的配置已经帮我们把涉及到的依赖选中

1495273155562982.png

3、值得需要注意的是,因为我的git目录是sites/default目录,生成的路径默认是根目录的modules/custom 
如果你的git是根目录,默认即可,但是我需要改成:sites/default/modules/custom这样生成的模块才能被git跟踪并提交。 
4、修改好之后,点击写入,提示成功。

三、登录本地开发环境-dev-1

git status //查看当前版本状态
//发现有未跟踪的文件夹 training ,这个文件夹就是我们点击写入之后生成的文件夹
ls training //查看文件夹内容,里面就是标准的Drupal8模块文件,包括install文件夹

1495273155865069.png

1、启用training,并推送代码到git仓库

drush fl //列出所有的features,当前training 为未安装状态
drush en training -y //启用training
git status //查看代码状态
git add . //添加所有的修改到暂存区
git commit -m "add training features"
git push origin master //推送本地版本库到远程仓库


四、登录本地开发环境-dev-2

1、拉取最新的代码,迁移最新数据库结构增量

git pull //从远程仓库拉取最新代码到本地开发环境

1495273156821808.png

drush en training -y //首次同步需要启用模块

1495273155782657.png

我们已经成功的通过git来转移数据结构,如果内容类型training添加了新字段,我们还需要继续。

五、同步新增的变量

1、我们继续在dev-1环境中,给traning添加新的字段mail

1495273156624376.png1495273156557659.png


2、进入features中,发现training的状态已经变成“已更改”,点击training进入

1495273156948512.png

我们发现被选中的字段多了几个,有背景色的区别,提示这既是变化的部分

1495273158838003.png

3、点击写入,然后进入服务器查看代码变化:

git status
    modified:   training/config/install/core.entity_form_display.node.training.default.yml
    modified:   training/config/install/core.entity_view_display.node.training.default.yml

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    training/config/install/field.field.node.training.field_mail.yml
    training/config/install/field.storage.node.field_mail.yml

no changes added to commit (use "git add" and/or "git commit -a")

发现文件被写入修改,我们需要把这个修改提交到git仓库,让dev-2拉取代码

git add .
git commit -m "add mail field in trainig"
git push origin master

4、登录dev-2开发环境,拉取最新代码

git pull
drush fra -y && drush cache-rebuild all //这次我们不需要drush en training,而是直接导入code到数据库

我们查看dev-2的training的字段,已经同步过来

1495273157969778.png