Features + Git + Drush,打造你的Drupal开发与维护标准工作流
还在为如何将本地的开发工作如何部署到生产环境而皱眉头?本文以实战历程教你如何一步步将你的工作成果从开发环境部署到生产环境。
如题所示,需要用到Features, Git, Drush;如果你还不知道他们是神马?自行补脑。
如果你理解并会用features,用过Drush,知道Git是干什么的,请继续阅读。否则自己看着办:)
这里演示如何将自己开发环境做好的一个slideshow,从开发环境部署到生产环境并启用。
假设你的项目代码已经使用git进行版本控制,并在开发环境与生产环境都是通过git clone方式获取代码。
在开发环境中制作一个slideshow,方案如下:
建立一个新的内容类型叫做slideshow,并添加相关的图片字段,连接字段,介绍字段等。同时启用模块views slideshow并做好相关配置然后保存。
将以上做好的配置导出为一个features,features里面应该包含内容类型slideshow及views的相关配置;命名为:home_slideshow,解压features放到目录sites/all/modules/custom/features下面。
在开发环境命令行方式下,执行如下命令:
cd sites/all/modules/custom/features
git add home_slideshow
git commit -m “add features:home_slideshow.”
git push origin master
然后到生产环境命令行方式下,执行如下命令:
git pull origin master
drush en home_slideshow -y
到这里,关于slideshow的开发工作已经从本地转移到生产环境并启用。手工进行少量配置即可使之工作。
下面介绍一些进阶用法与命令。
场景:
slideshow的views做了点修改。比如slideshow的排序方式从发布日期降序排列改为更新日期降序排列,如何做?如果没有这里的工作流,相信大多数人会直接在生产环境修改views配置。但是这不是常规的工作流程,下面介绍正确的工作流程。
1:在本地修改好views配置,测试完毕后,执行如下命令:
cd sites/all/modules/custom/features
drush fu home_slideshow
git add ./*
git commit -m “修改slideshow排序方式”
git push origin master
2:到生产环境执行如下命令:
git pull origin master
drush fr home_slideshow -y
drush cc all //这里看起来没必要执行清空缓存的操作,但是如果能保持这一好习惯,可以让你在开发过程中省心不少哦。
到此,你对views相关的更改已经从开发环境部署到生产环境。额外附赠如下礼品:
drush fu == drush features-update
drush fr == drush features-revert
features对drush已经有良好的支持。
需要指出的是,刚开始使用上述方案进行Drupal的开发与部署,可能会感觉浪费时间。但是如果你是在一个团队中工作的话,上述流程几乎是一个标准流程。同时你的工作成果都通过代码方式展现出来,利于项目控制与风险把控。如果这一流程执行的比较理想,在admin/structure/features下面看到所有的features都应该是”default”状态。
http://www.dplor.com/archives/546?utm_source=tuicool&utm_medium=referral
DrupalCon New Orleans 2016: Configuration Management, Composer, Git and Drush in Drupal 8
https://www.youtube.com/watch?v=1bxQJtiHy4k
Features + Git + Drush,打造你的Drupal开发与维护标准工作流的更多相关文章
- Vagrant - 打造跨平台的一致开发环境
官网 参考资料 借助 Vagrant ,可以使用 Vagrantfile 文件自动化虚拟机的安装和配置流程,方便快速的打造跨平台的统一开发环境. 1. Vagrant 是啥 Vagrant 用于构建及 ...
- Git详细教程---多人协作开发
Git可以完成两件事情: 1. 版本控制 2.多人协作开发 如今的项目,规模越来越大,功能越来越多,需要有一个团队进行开发. 如果有多个开发人员共同开发一个项目,如何进行协作的呢. Git提供了一个非 ...
- git clone开启云上AI开发
摘要:相比于传统的软件开发,AI开发存在以下4个痛点:算法繁多:训练时间长:算力需求大:模型需手动管理,我们可以使用云上AI开发的方式来缓解以上4个痛点. 本文分享自华为云社区<git clon ...
- Android NDK开发及调用标准linux动态库.so文件
源:Android NDK开发及调用标准linux动态库.so文件 预备知识及环境搭建 1.NDK(native development Kit)原生开发工具包,用来快速开发C.C++动态库,并能自动 ...
- nodejs选择JavaScript作为开发语言,是因为一般的开发语言的标准库都是带有IO模块的,并且通常这个 模块是阻塞性的,所以nodejs选择了没有自带IO模块的Javascript
Javascrip本身不带IO功能,nodejs选择JavaScript作为开发语言,是因为一般的开发语言的标准库都是带有IO模块的,并且通常这个 模块是阻塞性的,所以nodejs选择了没有自带IO模 ...
- 如何比较Keras, TensorLayer, TFLearn ?——如果只是想玩玩深度学习,想快速上手 -- Keras 如果工作中需要解决内部问题,想快速见效果 -- TFLearn 或者 Tensorlayer 如果正式发布的产品和业务,自己设计网络模型,需要持续开发和维护 -- Tensorlayer
转自:https://www.zhihu.com/question/50030898/answer/235137938 如何比较Keras, TensorLayer, TFLearn ? 这三个库主要 ...
- SCRUM 是一个用于开发和维护复杂产品的框架
转自:http://www.scrumcn.com/agile/scrum-knowledge-library/scrum.html#tab-id-1 Scrum 是一个用于开发和维护复杂产品的框架 ...
- Drupal 开发必备利器
http://drupalchina.cn/node/3436 转自 测试模块.主题.发行版的网站: http://simplytest.me/ Drupal API: https://api.dru ...
- 利用 WSL 在 Windows下打造高效的 Linux 开发环境
WSL-Windows Subsystem for Linux 介绍 The Windows Subsystem for Linux lets developers run Linux environ ...
随机推荐
- JQuery 常用知识
1.JSON 解析 JSON字符串: var str1 = '{ "name": "deyuyi", "sex": "man&qu ...
- 【代码笔记】iOS-使用MD5加密
一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, ...
- 平衡树、AVL树
平衡树 平衡树有AVL树.红黑树.2-3树.2-3-4树 AVL树 AVL树是最早的一种平衡树,它以发明者的名字命名:AVL是一种特殊的二叉搜索树,平移保证二叉搜索树的正确. 特征 在AVL树中节点的 ...
- Android Vsync 原理浅析
Preface Android中,Client测量和计算布局,SurfaceFlienger(server)用来渲染绘制界面,client和server的是通过匿名共享内存(SharedClient) ...
- Reactjs-generator-cli 一款基于Ink构建用于快速搭建React应用的CLI scaffolding工具
Reactjs-generator-cli 一款基于Ink构建用于快速搭建React应用的CLI scaffolding工具 A simple CLI for scaffolding React.js ...
- su、sudo、su - root的区别
su和sudo的区别 共同点:都是root用户权限: 不同点:su只获得root权限,工作环境不变,还是在切换之前用户的工作环境:sudo是完全获得root的权限和root的工作环境. sudo:表示 ...
- python2与python3的区别(持续更新)
1,print(打印),python2不换行可以使用逗号,python3不换行使用end='' python2版本: print 'a' 输出一个字符串 print a 输出一个变量 print 'a ...
- 判断Exception类中是否有InnerException属性
public static class ExceptionExtend { /// <summary> /// 利用反射来判断对象是否包含某个属性 /// </summary> ...
- python 多进程 Event的使用
Event事件 多进程的使用 通俗点儿讲 就是 1. Event().wait() 插入在进程中插入一个标记(flag) 默认为 false 然后flag为false时 程序会停止运 ...
- Django之cookie&session
cookie Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式.Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以包含有关用户的信息 ...