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

How to use the ‘git log‘ command to get change log for each file?

1. Using 'git log' command

#!/bin/bash

# 目标文件名
output_file="git_log.csv"

# 打印 CSV 文件的标题行
echo "CommitID,Author,Author Email,Date,Added-Lines Removed-Lines File" > $output_file
echo "CommitID,Author,Author Email,Date,Added-Lines Removed-Lines File"

# 运行 git log 命令并解析输出
git log --pretty=format:"commit^%H^%an^%ae^%ad" --numstat --date=iso | awk -v OFS=',' '
  BEGIN { FS="^" }
  /^commit/ {
    commit=$2;
    author=$3;
    email=$4;
    date=$5;
  }
  /^[0-9]/ {
    numstat=$1
    # added_lines=$1;
    # removed_lines=$2;
    # file=$3;
    # print commit,author,email,date,added_lines,removed_lines,file >> "'$output_file'";
    # can't find a solution to split numstat column
    print commit,author,email,date,numstat >> "'$output_file'";
    print commit,author,email,date,numstat;
  }
'

2. 这段脚本的目的是从 Git 仓库中提取提交日志信息,并将其格式化为 CSV 文件 git_log.csv

  • 运行 git log 命令: git log 命令用于生成提交日志。选项 --pretty=format:"commit^%H^%an^%ae^%ad" 指定自定义的日志输出格式,包含提交哈希 (%H)、作者 (%an)、作者的邮箱 (%ae) 和提交日期 (%ad)。 --numstat 则输出每个提交的文件统计信息(新增行和删除行)。
  • 解析 git log 输出: 使用 awk 解析 git log 的输出,并格式化为 CSV。
  • BEGIN 块:设置字段分隔符为 ^
  • 匹配 commit:每当检测到含 commit 关键字的行时,将信息拆解到相应的变量中。
  • 匹配文件统计信息行:匹配以数字开头的行(表示新增和删除的行数及文件)。将这些行的相关信息保存到变量,然后打印至 CSV 文件和终端。

http://www.kler.cn/a/421648.html

相关文章:

  • Linux 网卡收包流程如下
  • DevOps工程技术价值流:GitLab源码管理与提交流水线实践
  • 单片机学习笔记 12. 定时/计数器_定时
  • flask的第一个应用
  • 大R玩家流失预测在休闲社交游戏中的应用
  • Redis 之持久化
  • Redis进行性能优化可以考虑的一些策略
  • Android13 允许桌面自动旋转
  • linux 获取公网流量 tcpdump + python + C++
  • D84【python 接口自动化学习】- pytest基础用法
  • 【查询基础】.NET开源 ORM 框架 SqlSugar 系列
  • 基于Java Springboot药店管理系统
  • Java基础面试题15:简述什么是 Servlet?
  • MATLAB —— 机械臂工作空间,可达性分析
  • 浏览器的事件循环机制
  • 电池SOH预测模型 | 基于VAE—BiGRU变分自编码器结合深度学习模型(Python/Matlab)
  • Python实现网站资源批量下载【可转成exe程序运行】
  • 计算机网络常见面试题总结(上)
  • KAN-Transfomer——基于新型神经网络KAN的时间序列预测
  • 基于Java Springboot校园论坛APP且微信小程序
  • Go学习笔记之数据类型转换
  • 基于OpenCV的拆分和合并图像通道实验案例分享_基于RK3568教学实验箱
  • 权限提升漏洞之Netlogon协议详解 以及可能出现得漏洞分析
  • 【035】基于51单片机俄罗斯方块游戏机【Proteus仿真+Keil程序+报告+原理图】
  • Scala模拟匹配
  • 怎么做DNS污染检测