利用Git Hook和NodeJs自动变更提交后项目的版本号

以前用SVN的时候,记得每次提交,有个版本号会随提交次数而增加,这样可以方便看到线上版本和开发版本之间一不一致,但换到Git后,这样的功能却没有了,不过现在利用Hook,同样可以实现这样的功能,Let’s Do It!

  • 环境要求
    • win或随便哪个操作系统
    • 安装了NodeJs
    • 安装了Git(这是必须的)

我们用到的Hook文件是 pre-commit ,顾名思义提交前我们来干些啥,钩子内容如下:

#!/usr/bin/env node

const execSync = require('child_process').execSync
const fs = require('fs')
const path = require('path')

const projectPath = path.join(__dirname, '../../')

const verFile = 'wwwroot/protected/_ver/_ver.php'
//读取 版本号文件
var tplData = fs.readFileSync(projectPath + '/' + verFile).toString()
//替换版本号
var match = tplData.match(/return (\d+);/i)
var _ver = 1
if (match) {
    _ver = parseInt(match[1])
    console.log('提交前的版本编号为: ' + _ver.toString())
    _ver += 1
    console.log('此次提交后的版本编号将为: ' + _ver.toString())
    tplData = tplData.replace(/return \d+;/i, `return ${_ver};`)
}
//覆盖 版本号文件
fs.writeFileSync(projectPath + '/' + verFile, tplData)

//将变更的文件列入待提交内容里
execSync(`git add ${verFile}`)

//正确退出,输出非0值表示拒绝提交
process.exit(0)
  • 其中 projectPath 为项目根目录,和 .git 同级。
  • wwwroot/protected/_ver/_ver.php 为项目的版本编号,这个文件可以根据自己的需求改变,内容很简单,就是 return 一个数字编号。
  • 利用正则匹配,把提交前把编号自动加1,并写入回文件,最后将这个文件加入更改列表,这样就人不知鬼不觉的修改了版本编号。

当然,这个编号完全可以根据自己的要求来做,至于是数字还是字符串,你来定义。

最后的最后,在你的项目里显示这个编号,如果你并不需要显示它,那你是来干啥的?点个赞把亲~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值