首页 > 编程语言 >nodejs child_process 操作git 提交记录 提取git commit信息

nodejs child_process 操作git 提交记录 提取git commit信息

时间:2024-09-24 09:51:16浏览次数:10  
标签:git const nodejs process execSync -- commit


/**
 * 记录发布时的commit信息,用于区分内网版本包之间的差异
 */

 import path from 'path';
 import {writeFileSync} from 'fs';
 import {execSync} from 'child_process';

 let outputFileName = process.argv[2];

 if (!outputFileName) {
   outputFileName = 'revision.json';
 }

 try {
   const rootDir = execSync('git rev-parse --show-toplevel').toString().trim();
   // 分支
   const branch = execSync('git rev-parse --abbrev-ref HEAD').toString().trim();
   // commit id
   const SHA1 = execSync('git rev-parse --short HEAD').toString().trim();
   // commit body
   const commit = execSync(
     `git log -n 1 --date=format:'%Y-%m-%d %H:%M:%S' --format="%s%n%an%n%cd"`
   )
     .toString()
     .trim();

   const [message, author, date] = commit.split('\n');
   const content = JSON.stringify(
     {branch, SHA1, message, author, date},
     undefined,
     2
   );

   writeFileSync(path.join(rootDir, outputFileName), content, {
     encoding: 'utf8'
   });

   console.log(
     '\x1b[32m%s\x1b[0m',
     '✨ [amis] revision.json generated successfully!'
   );
   process.exit();
 } catch (error) {
   console.log('\x1b[31m%s\x1b[0m', '❌ [amis] revision.json failed to write!');
   process.exit(1);
 }


标签:git,const,nodejs,process,execSync,--,commit
From: https://blog.51cto.com/u_12836588/12097190

相关文章

  • 让人眼前一亮的开源项目「GitHub 热点速览」
    时隔两周,我又带着让人眼前一亮的开源项目回来了!告别数据线、蓝牙、WiFi和网络,只需用手机的摄像头扫描一张动图条形码(需安装应用),就能在设备间传输文件的libcimbar,一款无需联网和蓝牙的文件传输工具,仅用摄像头传输数据。用Rust编写的PostgreSQL数据库命令行管理工具rainfro......
  • 使用Python的subprocess执行另外一个python文件(应用之一是Pytorch中如何让多个不同的
    文章目录subprocess基础使用subprocess高级使用subprocess多进程subprocess执行情况在深度学习中的应用话不多说了,直接看代码。subprocess基础使用假设我要运行一个名字叫helloworld.py的文件,在主程序如下运行即可。主程序importsubprocessp=subprocess.Pop......
  • roslaunch carla_ros_bridge carla_ros_bridge.launch运行报错逐条解决REQUIREDproces
    前言:跟着自动驾驶之心的老师学习仿真,在carla_ros_bridge那块卡住了,遇到了超多问题,现在看看我们是怎么解决的吧。首先是carla_ros_bridge安装,老师是18.04,我的项目工程是20.04,所以我肯定最终还是要换到20.04的,所以以下就是踩坑。一.carla_ros_bridge安装:可见官网的文档ROSbri......
  • ADAU1701的Dynamics Processors算法补充例程合集(10个例程)
    作者的话做ADAU1701,心血来潮,再过了一遍SigmaDSP的算法合辑,发现有不少遗留的,比较有特点的算法,就在这个系列文章里一一呈现吧。ADAU1701我写了超过100个例程,但是都很早期,2018年开始弄的,我感觉并不是很全,那这一次就彻底把他补全一下,这个系列文章,将把我能够找到的,ADI原厂提供......
  • Hexo-GitHub部署魔改第一步-config
    Hexo-GitHub部署魔改第一步_config.yml1.config.yml#HexoConfiguration##Docs:https://hexo.io/docs/configuration.html##Source:https://github.com/hexojs/hexo/#Site#设置博客的标题title:YourBlogTitle#子标题,可选subtitle:'xxxxx'#博客的描述,可选......
  • Chirpy+Github
    相关网址Chirpy示例:网页上有官方教程,我写的肯定不全Chirpy示例仓库:这个就是包含官方教程的那个示例的仓库Chirpy模板仓库:直接fork这个仓库,快速搭建,没有多余的东西RealFaviconGenerator:生成图片替换原来的蚂蚁图片fontawesome:扩展侧边栏时,图标可以从这里找......
  • 震撼!AI实时生成游戏,每秒20帧,谷歌扩散模型最新突破一夜爆火,附论文介绍和GitHub代码
    震撼!AI实时生成游戏,每秒20帧,谷歌扩散模型最新突破一夜爆火,附论文介绍和GitHub代码。“比Sora还震撼”,AI可以实时生成游戏了!谷歌DeepMind打造出了首个完全AI驱动的实时游戏引擎——GameNGen。在单个谷歌TPU上,它以每秒20帧模拟起了经典射击类游戏DOOM(毁灭战士)。所有游戏画面都是根据......
  • 【PLW003】设备器材云端管理平台v1.0(SpringBoot+Mybatis+NodeJS+MySQL前后端分离)
    设备器材云端管理平台是一种专为各种设备(如教育行业中的实验设备、建筑行业中的施工设备等)租赁或共享孵化的数字化管理工具,旨在融合数字化手段,提高各种设备器材的管理效率、确保设备的安全稳定运行,并优化资源使用及配置效率。随着高新技术的不断发展和应用(如大数据、人工智能等新......
  • 基于nodejs+vue校内外美食推荐系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着移动互联网技术的飞速发展,人们的生活方式发生了翻天覆地的变化,尤其是在餐饮消费领域。校园内外,学生们及周边居民对于美食的探索与追求日益增强,但面对琳......
  • 基于nodejs+vue校内突发事件预警系统[开题+源码+程序+论文]计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着教育事业的快速发展和校园规模的不断扩大,校园安全问题日益凸显,尤其是突发事件的频繁发生,给学校管理和师生安全带来了严峻挑战。近年来,从自然灾害到公共......