《我是程序媛》系列:在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。需要用的時候再單聊;
完
來看一個唐總開發好的模塊.png