当前位置: 首页 > news >正文

在git commit时利用AI自动生成并填充commit信息

文章目录

  • 前言
  • 一、实现思路
  • 二、具体实现
    • 1.获取修改的代码内容
    • 2.提交给AI,并从AI得到结果
    • 3.信息写入到git commit的编辑框
  • 效果
  • 使用
  • 总结


前言

提交代码时都会用到git commit,这时一般会根据修改的代码来写上说明信息,在工作中,公司也往往会对commit的信息有严格的格式要求。
那么我们考虑做一款工具,在使用git commit时,在弹出的编辑框中,利用AI来分析修改的代码,自动生成并填充符合格式要求的commit信息,之后我们只需要wq便能够完成提交。
借助该工具,可以快速生成关于修改代码的一个较为全面的总结信息,避免程序员因为“偷懒”而随便填写commit信息。

一、实现思路

实现主要分为3个部分:
1、git commit时,获取修改的代码内容。
2、提交给AI,并从AI那里得到结果。
3、写入到git commit的编辑框。

这里实现的前提条件是公司已经有内部的AI模型可使用,这样将代码提给AI是没有风险的。注意不要将代码提给外部AI,存在信息安全问题。

二、具体实现

1.获取修改的代码内容

git提供了hook机制,即在使用git的时候能够调用一些我们的实现。这里我们修改了.git\hooks\prepare-commit-msg文件,prepare-commit-msg文件是本已存在的,在执行git commit的时候,会执行prepare-commit-msg脚本。

#!/bin/sh# 获取 commit message 文件
COMMIT_MSG_FILE="$1"python .git/hooks/ai_commit.py "$COMMIT_MSG_FILE"exit 0

这个脚本也很简单,就是执行一个python脚本,我们的主要逻辑都放在这个py中实现。

这里是在git commit时就会使用该python脚本,如果我们想要做一些区分,如用户可以选择用一般的git commit自己填写还是用AI生成信息,则这里可以加一些if条件来处理。

ai_commit.py

import sys
import os
import subprocess
from openai import OpenAIdef get_git_diff():"""get the diff of staged"""try:diff = subprocess.check_output(["git", "diff", "--cached"],text=True,encoding="utf-8",errors="ignore")print("[DEBUG] git diff --cached get success", file=sys.stderr)return diffexcept subprocess.CalledProcessError:print(
http://www.dtcms.com/a/478317.html

相关文章:

  • 【完整源码+数据集+部署教程】可回收金属垃圾检测系统源码和数据集:改进yolo11-AggregatedAtt
  • HakcMyVM-Crack
  • emmc extcsd寄存器
  • 利用径向柱图探索西班牙语学习数据
  • wordpress建淘宝客网站吗上海网站制作最大的公司
  • 定制网站平台的安全设计房地产公司网站建设
  • 筛法(Sieve Method)简介
  • 【论文阅读】基于指数-高斯混合网络的视频观看时间预测的多粒度分布建模-小红书recsys25
  • 网站开发过程模型做电影网站怎么接广告
  • 手机群控软件在游戏运营中的行为模拟技术实践
  • MySQL----触发器
  • 汕头模板建站平台朝阳市做网站
  • C8051F351-GMR工业用 8051 MCU 开发板C8051F351-GMR嵌入式处理器和控制器,适用于高精度模拟信号处理
  • [嵌入式系统-107]:语音识别的信号处理流程和软硬件职责
  • OkHttp源码解析(一)
  • 拆分PDF.html 办公小工具
  • 网站编辑用什么软件有关于网站建设类似的文章
  • 陶瓷网站制作wordpress导购主题
  • 分割——双线性插值
  • 北京天仪建设工程质量检测所网站上海做网站的公司电话
  • 建站优化一条龙新闻型网站建设
  • Petslist – Pet listing WordPress Theme Free Download
  • STM32 GPIO-------设置成51单片机模式输出
  • C++之多层继承、多源继承、菱形继承
  • 双目三维重建-1相机标定
  • GIT 提示 remote: HTTP Basic: Access denied
  • 建设门户网站都需要什么成都网站设计新闻
  • 徐州贾汪区建设局网站资兴市住房和城乡建设局网站
  • 黄江仿做网站企业管理系统多少钱
  • 机器学习-推荐系统(下)