前提:已安装features模块,git版本管理和drush
在团队协作中,项目一般由多个开发测试人员组成,其中可能包括,前端设计,后端开发,测试人员和客户,那么在项目开发不断的推进,各种功能不断的完善,各个环境数据结构需要同步,下图是一个通用的开发测试环境,如图:
本地开发环境-dev-x:是开发人员各自的环境,独立的数据库
集成测试环境:测试环境是给项目内部人员测试的环境
正式环境-Pro或者Uat客户内部测试环境:是给客户在正式发布之前进行内测的环境
Git远程仓库:是项目代码的最新版本,包括项目分支
实例
一、在dev-1新建内容类型-[training]
二、使用features把功能导出成code(模块)
1、进入到features管理页面:admin/config/development/features
在当前页面中,自动显示检测到的新建的内容类型
2、默认的配置已经帮我们把涉及到的依赖选中
3、值得需要注意的是,因为我的git目录是sites/default目录,生成的路径默认是根目录的modules/custom
如果你的git是根目录,默认即可,但是我需要改成:sites/default/modules/custom
这样生成的模块才能被git跟踪并提交。
4、修改好之后,点击写入,提示成功。
三、登录本地开发环境-dev-1
git status //查看当前版本状态 //发现有未跟踪的文件夹 training ,这个文件夹就是我们点击写入之后生成的文件夹 ls training //查看文件夹内容,里面就是标准的Drupal8模块文件,包括install文件夹
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 //从远程仓库拉取最新代码到本地开发环境
drush en training -y //首次同步需要启用模块
我们已经成功的通过git来转移数据结构,如果内容类型training添加了新字段,我们还需要继续。
五、同步新增的变量
1、我们继续在dev-1环境中,给traning添加新的字段mail
2、进入features中,发现training的状态已经变成“已更改”,点击training进入
我们发现被选中的字段多了几个,有背景色的区别,提示这既是变化的部分
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的字段,已经同步过来