1 功能概述
在某些特殊情况下,需要凑齐一定的代码量,或者一定的提交次数,为了应急不得不采用一些非常规的手段来保证达标。本文分享的是一段自动提交代码的脚本,用于凑齐code review流程数量,将单次code review代码修改行数拉下来(备注:如果git开启自动生成code review流程,则每次push操作就会自动生成一次code review流程)。
2 友情提示
本脚本仅用于特殊应急场景下,平时开发中还是老老实实敲代码。
重要的事情说三遍:
千万不要在工作中使用、千万不要在工作中使用、千万不要在工作中使用
3 实现思路
3.1 准备示例代码
可以多准备一些样例代码,然后随机取用, 效果会更好。例如:
需要确保示例代码是有效的代码,有些项目可能有eslint检查,如果格式不对可能导致无法自动提交
function huisu(value, index, len, arr, current) { if (index >= len) { if (value === 8) { console.log('suu', current) } console.log('suu', current) return } for (let i = index; i < len; i++) { current.push(arr[i]) console.log('suu', current) if (value + arr[i] === 8) { console.log('结果', current) return } huisu(value + arr[i], i + 1, len, arr, [...current]) console.log('suu', value) current.pop() onsole.log('suu', current) } } 复制代码
3.2、准备一堆文件名
准备一堆文件名,用于生成新的问题,如果想偷懒,直接随机生成问题也不大。例如:
// 实现准备好的文件名称,随机也可以 const JS_NAMES = ['index.js', 'main.js', 'code.js', 'app.js', 'visitor.js', 'detail.js', 'warning.js', 'product.js', 'comment.js', 'awenk.js', 'test.js']; 复制代码
3.3 生成待提交的文件
这一步策略也很简单,就是根据指定代码输出文件夹内已有的文件数量,来决定是要执行新增文件还是删除文件
if (codeFiles.length > MIN_COUNT) { rmFile(codeFiles); } else { createFile(codeDir); } 复制代码
【新增文件】
根据前面两步准备的示例代码和文件命名,随机获取文件名和代码段,然后创建新文件
// 创建新的代码文件 function createFile(codeDir) { const ran = Math.floor(Math.random() * JS_NAMES.length); const name = JS_NAMES[ran]; const filePath = `${codeDir}/${name}`; const content = getCode(); writeFile(filePath, content); } 复制代码
【删除文件】
这一步比较简单,直接随机删除一个就行了
// 随机删除一个文件 function rmFile(codeFiles) { const ran = Math.floor(Math.random() * codeFiles.length); const filePath = codeFiles[ran]; try { if (fs.existsSync(filePath)) { fs.unlinkSync(filePath); } } catch (e) { console.error('removeFile', e); } } 复制代码
3.4 准备commit信息
这一步怎么简单怎么来,直接准备一堆,然后随机取一个就可以了
const msgs = ['feat:消息处理', 'feat:详情修改', 'fix: 交互优化', 'feat:新增渠道', 'config修改']; const ran = Math.floor(Math.random() * msgs.length); console.log(`${msgs[ran]}--测试提交,请直接通过`); 复制代码
3.5 扩大增幅
上述步骤执行一次可能不太够,咱们可以循环多来几次。随机生成一个数字,用来控制循环的次数
const ran = Math.max(3, parseInt(Math.random() * 10, 10)); console.log(ran); 复制代码
3.6 组合脚本
组合上述步骤,利用shell脚本执行git提交,详细代码如下:
#! /bin/bash git pull cd $(dirname $0) # 执行次数 count=$(node ./commit/ran.js) echo $count # 循环执行 for((i=0;i<$count;i++)) do node ./commit/code.js git add . msg=$(node ./commit/msg.js) git commit -m "$msg" git push done 复制代码
总结
总的来就就是利用shell脚本执行git命令,随机生成代码或者删除代码之后执行commit提交,最后push推送到远程服务器。
给大家推荐一个实用面试题库
1、前端面试题库 (面试必备) 推荐:★★★★★
地址:前端面试题库