专栏首页腾讯NEXT学位小程序开发工具强制 GIT 提交

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

遇到的问题

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

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

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

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

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

解决方法

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

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

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

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

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

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

具体的代码如下:

#! /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 文本内容添加的,还是需要在微信开发者工具中手动勾选下启动自定义处理命令,默认开发者工具是不开启这个选项的(来源)。

{  "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  | 前端课程

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

本文分享自微信公众号 - 腾讯NEXT学院(Next_Academy)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 游戏《蔚蓝山》教我的编程道理

    如果有这么一款游戏,你操作的角色平均每 20 秒就会死亡一次,正常通关一次,总共需要死掉超过 2000 次。你猜这是一款神作还是垃圾?

    腾讯NEXT学位
  • 《Node.js在CLI下的工程化体系实践》成都OSC源创会分享总结

    腾讯NEXT学位
  • 微信小游戏开发技术与应用

    腾讯NEXT学位
  • mongodb 复制集 运维 遇到的问题

    192.168.2.1    dump节点 ,之前因为磁盘不足,mongodb进程已宕机,这个实例也配置有vote投票权!

    二狗不要跑
  • 5分钟python:在PPT里做三联柱形图

    分钟说长不长,说短不短,可以学会对办公自动化的诀窍。在这个python的PPT专辑里,会教大家如何用python自动化一步步,一行行程序,手把手的编码说明,生成...

    诸葛青云
  • 白帽黑帽真的有差别么

    下面讲讲我对于他们的理解,众所周知,黑帽无疑是最赚钱的,单从以前接的一个简单的渗透单,虽然本质是违法,但是利润高的让人禁不住诱惑,区区一周就有好几万入账,可能这...

    网e渗透安全部
  • 腾玛人工智能受邀出席中国西部国际投资贸易洽谈会

    2019年5月16日,第二届中国西部国际投资贸易洽谈会(以下简称“西洽会”)在重庆国际博览中心开幕。本届“西洽会”以“开放新时代·发展新作为”为主题。据执委会初...

    腾玛人工智能
  • 熬夜写了一个小游戏,向SpaceX聊表敬意

    题图是我长久放在桌面上的一张图片。 这张照片的名字叫做 Pale Blue Dot(暗淡蓝点),是旅行者1号在距地球64亿公里回望太阳系时所拍下的。照片右侧中部...

    Crossin先生
  • 面试必问:session,cookie和token的区别

    cookie,session,token作为面试必问题,很多同学能答个大概,但是又迷糊不清,希望本篇文章对大家有所帮助

    cctester
  • rcp命令

    rcp命令用于复制远程文件或目录,如同时指定两个以上的文件或目录,且最后的目标位置是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到该目录中,执行rc...

    WindrunnerMax

扫码关注云+社区

领取腾讯云代金券