前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小程序开发工具强制 GIT 提交

小程序开发工具强制 GIT 提交

作者头像
腾讯NEXT学位
发布2019-07-08 13:40:19
1.3K0
发布2019-07-08 13:40:19
举报
文章被收录于专栏:腾讯NEXT学位

遇到的问题

在小程序开发过程中,代码提交突然变成了一件非常头疼的事情。因为小程序的开发、编译、预览到最后的上传发布过程中,任何一步其实都和 Git 没有任何关系。

所以之前自己一个人开发的时候,经常性的就忘记了 commit 代码,亦或是 commit 了但是没有对远端进行 push 操作。一个人开发的时候还好,多个人开发的时候再是这种操作习惯可就要把人坑惨了。

另外还有一个问题是,小程序的发布对 Git 没有强相关,所以对代码分支的要求不高。一般说来,日常的 Web 开发中,我们都是在 dev 或者 feature/xxx 分支中进行开发,test 分支进行测试,最后 master 分支合并后上线。

能够严格的执行这个过程的最重要的原因是因为我们的发布系统只支持从主分支上拉取代码,强制让大家养成了良好的习惯。但是小程序中没有这种强相关,所以会经常导致主分支不是最新的版本,而可能是某个其它分支才是线上最新代码。

长久以往下去,可能没有同学能够清楚最新的代码是在哪个分支了,一不小心就把分支给删除了也有可能。

解决方法

虽然说微信开发者工具目前已经内嵌了版本管理功能,但是我试了一下似乎并不能解决我的问题。

后来我发现小程序是支持自定义预处理命令的,提供了 beforeCompile,beforePreview 和 beforeUpload 三个预处理钩子,分别在编译前、预览前和上传前触发。

所以我就想利用这个钩子,在上传前判断当前仓库的状态,如果不符合要求就组织上传。目前我主要是做以下三种操作:

1.判断当前仓库是否有代码没有 commit,避免上线的版本有未提交的代码

2.判断当前仓库是否是 master 分支,避免上线的版本非主分支代码

3.推送当前分支代码到远端,避免其它协作者无法拉取到线上最新的代码

具体的代码如下:

代码语言:javascript
复制
#! /usr/bin/env sh# 检查分支是否为主分支br_name=$(git symbolic-ref --short HEAD);if [ $br_name != "master" ]then  echo "[错误]当前分支名为 $br_name 但是上传包必须是在 master 分支";  exit 42;fi# 检查分支上是否有未提交的代码if [[ ! -z $(git status --porcelain) ]]then  echo "[错误]你有未提交的代码,上传包前请将代码提交到仓库";  exit 42;fi# 最后自动提交到远端仓库git push;

其中 exit 42 表示是异常退出,微信开发者工具监听到异常退出后会中止上传进程,你也可以是别的非0错误号,更多的错误号可以查看 torvalds/linux 仓库。

最后我们还需要在微信开发者工具-详情中勾选启用自定义处理命令,并在上传前预处理中输入 ./bin/beforeUpload 地址,该地址即为刚才你的脚本所在位置。如果是修改 project.config.json 文本内容添加的,还是需要在微信开发者工具中手动勾选下启动自定义处理命令,默认开发者工具是不开启这个选项的(来源)。

代码语言:javascript
复制
{  "scripts": {    "beforeCompile": "",    "beforePreview": "",    "beforeUpload": "./bin/beforeUpload"  }}

结束语

设置完毕之后,当你不符合条件的时候就会报错,从而达到了我强制与 Git 绑定的需求,避免线上代码在某个同学的本地停留,保证远端代码与线上代码的一致性。当然有了这些钩子,你也可以做更多有趣好玩的事情,欢迎大家分享。

原文地址:

https://imnerd.org/miniprogram-force-git-commit.html

-温馨提醒-

小程序奖学金活动将于8月结束

第六期「学业奖学金」将于7月15日开放申请

一等奖3万的「优秀奖学金」将于8月开放申请

注意留意群里开放申请的消息哟~

(已购课但还未加学习交流群的童鞋

速加Flora QQ2121140461邀请入群)

心动不如行动,快戳戳我们下方的阅读原文报名吧

「人人都会微信小程序实战进阶」限时特惠

上线自己的小程序,抢领百万奖学金

微信官方证书召唤你,腾讯offer等你拿

腾讯大牛手把手教学,0基础快速上手小程序

腾讯NEXT学院

求职干货 | 前辈blog  | 前端课程

戳“阅读原文”申领百万奖学金

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯NEXT学院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档