《我是程序媛》系列:在FT里开发后台管理模块教程一
FT是什么?
是我司内部基于yii2框架,H+主题开发的后台管理框架;
FT提供了什么?
- 登录
- 权限
- UI
- Log
FT和其他系统的关系?
- FT是框架,你是模块
- 通过composer安装模块
开发一个模块你需要做什么功能?
- 权限配置install,update
- 配置菜单;
- 开发;
多人协作开发一个模块(拿活动举例)
先说开发,调试
- 建立代码库,命名规范 web/php-yii2-****-admin
- 编写composer.json和src
- 打包
- 安装
composer require "web/php-yii2-cms-admin",详见http://docs.phpcomposer.com/03-cli.html
if(没有release包)
{
安装开发包;
git信息;
} else {
if(参数--prefer-source)
{
安装最新版本包;
git信息;
} else {
参数 --prefer-dist:
安装最新版本包;
无git信息;
}
}
这时候你就可以开始你的开发了,但是当别人git pull FT项目的代码时,又看不到你安装的包;
如果这个包需要多人协作时,问题就来了。
tips:记住这个场景哦,“多人协作开发包”; |
---|
毕竟,我们是不建议安装dev-master的,我们希望大多数情况还是通过包依赖来解决。 |
多人协作方式
第一种方式:直接git clone
缺点:需要进入文件夹提交更新;
优点:简单啊,还不够么;
第二种方式:git submodules
第三种方式:git subtree (>v1.8.0.0)
git Subtree 的使用场景
- 替代git submodule命令,合并子仓库到项目中并存放在子目录;
- 当多个项目共用同一部分代码,而这些代码跟着项目在快速更新的时候;
- 把一部分代码迁移出去独立为一个新的 git 仓库,但又希望能够保留这部分代码的历史提交记录。
git subtree用法
- 第一次添加子目录,建立与git项目的关联。
语法:git remote add -f <子仓库名> <子仓库地址>
解释:其中-f意思是在添加远程仓库之后,立即执行fetch。
语法:git subtree add --prefix=<子目录名> <子仓库名> <分支> --squash
解释:–squash意思是把subtree的改动合并成一次commit,这样就不用拉取子项目完整的历史记录。–prefix之后的=等号也可以用空格。
$git remote add -f cms-admin git@code.ziroom.com:web/php-yii2-cms-admin.git
$git subtree add --prefix=vendor/web/php-yii2-cms-admin cms-admin master --squash
- 从远程仓库更新子目录
语法:git fetch <远程仓库名> <分支>
语法:git subtree pull --prefix=<子目录名> <远程分支> <分支> --squash
$git fetch cms-admin master
$git subtree pull --prefix=vendor/web/php-yii2-cms-admin cms-admin --squash
- 从子目录push到远程仓库
语法:git subtree push --prefix=<子目录名> <远程分支名> 分支
$git fetch cms-admin master
$git subtree push --prefix=vendor/web/php-yii2-cms-admin cms-admin master
可能遇到的问题
- prefix ************** already exists.
这是因为对应的目录已经存在,不能直接添加,需要按下面的方式把对应的目录剥离开然后再加入subtree。需要用的时候再单聊;
完