如何给自己的项目升级fastadmin

发布于 2019-11-27 17:47:15

fastadmin是一款优秀的开源框架,除了有各种实用功能,官方还不竭余力的对框架的进行维护与更新。显然,哪怕不是为了体验更多的功能,我们也得出于安全性的考虑,适时的对自己基于fastadmin的项目进行升级更新。
下面我就介绍如何对fastadmin项目进行升级。

PS:本文详细阐述升级流程和注意事项。

目录
[toc]

1.环境介绍

先说下我的项目情况:

1) fastadmin版本比较老,2017年的 :1.0.0.20171026_beta

1) 版本控制器用的是SVN。

image.png

2.思路

1) 把SVN代码迁移到git下,如码云、coding等平台

1) 在码云上fork 下 Fastadmin仓库

1) 把转移到git的代码拉下本地,同时关联fork 后的fastadmin远程仓库地址

1) 拉取fork后的fastadmin代码到本地,然后强制合并。

1) 更新bower 和 composer依赖

1) 同步数据结构

1) 完成,并提交代码

3.准备工具

1) git客户端

1) bower 客户端,用于更新fastadmin前端依赖。

1) composer 客户端,用于更新fastadmin 的composer依赖

1) phpstorm (非必须),处理冲突文件的界面很友好,推荐使用。

1) Navicat (非必须),在本文中用于处理数据结构同步。

4.fork官方仓库

  1. 把SVN代码迁移git仓库,这里我就不再赘述,可以百度教程或者查看git教程,同时原本就用git管理的同学可以跳过这步,我这里用的是码云gitee。
  1. 由于官方Fastadmin使用的是码云gitee,我们得在gitee 注册一个账号,然后在fastadmin仓库 点击 “fork”

image.png

  1. 当把项目迁移到git后,把代码clone到本地,使用命令行切换到项目根目录,通过:git remote -v 命令查看本地代码关联的远程仓库情况。image.png
  2. 发现目前只有一个origin 远程仓库,这个是我们自己项目的远程仓库。然后还需要再增加一个远程仓库,也就是刚刚fork的fastadmin仓库。

image.png

  1. 复制地址后,使用命令git remote add fastadmin + "你自己的fork下来的fastadmin 地址" 增加fastadmin远程仓库, 例如我的:git remote add fastadmin git@gitee.com:aijiyenan/fastadmin.git
  2. 添加完fork地址后,我们再通过git remote -v 查看远程仓库情况,这时多出了fastadmin,这就是等下同步代码的关键:

image.png

5.合并仓库

  1. 通过:git fetch fastadmin 命令,把远程仓库fastadmin拉下本地:

image.png

  1. 现在我们本地就有了origin 和 fasdadmin 两个仓库的代码,然后要做的就是把fasdadmin合并到origin。命令:git merge fastadmin/master --allow-unrelated-histories。PS:这是因为git认为这是两个不相关的项目,我们得在命令后面加上参数: --allow-unrelated-histories ,进行强制合并。

image.png

注意:如果遇到下面提示Automatic merge failed; fix conflicts and then commit the result.,不要惊慌。这是因为合并过程中有冲突文件,版本相差越大,冲突的文件就可能越多,我们只要解决有冲突的文件即可。

image.png

  1. OK,此时合并成功,但是发现新增了不少文件,同时也有不少文件有冲突。接下来就是最辛苦的环节了,解决冲突!但是不要怕,在phpstorm里解决冲突很友好。选择跟目录,右键:Git-->Resolve Conflicts

image.png

  1. 啪啪啪,出现一堆冲突文件,但是不要怕,很多都是我们没改过的文件,所以,可以把确定我们没有动过的文件,多选后,选择右边的“Accept Theirs”接受fastadmin的文件,替换本地文件。反之如果以本地文件为准,则选择“Accept Yours”,如果遇到不确定的,就得选择 “Merge”,或者双击文件进行修改了

image.png

这是选择手动修改的界面以及说明:

image.png

6.更新依赖

  1. 首先把/public/assets/libs 目录下的文件都删了
  2. 确保项目根目录里的.bowerrc 和 bower.json 是最新同步的
  3. 回到项目根目录,执行前端依赖安装命令:bower install,这样就可以把所有前端重装一遍。
  4. 更新composer插件(如果没composer,得安装,并且设置源为中国镜像,教程在composer官网上有),命令:composer updateimage.png
  5. 至此,代码部分已经全部同步完成。剩下就的是比对数据库结构是否有改动,然后同步结构。

image.png

  1. 所有都更新完后,进入系统查看,已经是最新版了。

image.png

7.同步数据库

更新数据库同样需要细心,目前有两个比较好的方法:
  1. 通过安装一个新的fastadmin项目,目的是拿到这个新项目的数据库,然后通过navicat等数据库工具与你的项目数据库进行比对同步(注意:这个新生成的数据库前缀要和你项目的一样)
  2. 通过git版本对比fastadmin.sql文件,找到差异化的地方,然后再手动修改你项目的数据库。
本文演示第二种方法,也就是通过git对比fastadmin.sql:
  1. 在phpstrom里找到 /application/command/Install/fastadmin.sql文件,右键进行版本对比:

image.png

  1. 找到其中有差异的地方,再手动修改对应结构和数据。例如下图,通过对比,我们发现新增了fa_version表,这时我们复制表结构sql(记得把前缀改成你项目的前缀),放到数据库运行生成即可。

image.png

8.总结&注意

Q:如果往后有更新,需要同步怎么办?

A:不用怕,由于本地项目已经和远程的fastadmin仓库关联,操作就不必这么复杂了。只要先到码云上,先把你的fork的fastadmin仓库与官方仓库进行同步,然后在本地依次,git fetch fastadmin,git merge fastadmin/master 既可以。

由于版本的更新,对应的配置可能会有增减。所以特别注意config.php等文件的合并。

更新完后,如果有错误,需要耐心调试

8 条评论

发布
问题