使用git统计单人指定时间范围内代码提交总数

方法一:使用git log + awk

使用工具: git bush

  1. 验证 git log 输出:
    首先,运行 git log --since=“2025-01-01” --until=“2025-02-28” --author=“testName” --numstat 命令,检查它的输出是否符合预期。
    确保输出包含 numstat 格式的统计信息,而不是错误消息或空输出。
  2. 直接在 awk 中测试脚本:
    如果 git log 的输出看起来是正确的,尝试将输出重定向到一个文件,然后用这个文件作为 awk 的输入来测试脚本。
    例如:
git log --since="2025-01-01" --until="2025-02-28" --author="testName" --numstat > output.txt
awk 'BEGIN { insert = 0; delete = 0 } { insert += $1; delete += $2 } END { print "Inserted lines:", insert, "\nDeleted lines:", delete, "\nTotal lines changed:", insert - delete }' output.txt

这样就能将统计结果输出在命令行中

附加信息:

1.安装 Git Bash:

Git Bash 是一个包含 awk 和其他 Unix 工具的命令行环境。
访问 Git for Windows 网站,下载并安装 Git Bash。
安装完成后,打开 Git Bash,您就可以在其中使用 awk 命令了。

方法二:awk不可用时,使用git log + 脚本执行

  1. 第一步 相同的
 git log --since="2025-01-01" --until="2025-02-28" --author="testName" --numstat > output.txt 
  1. 创建脚本文件,代码贴在下面自取
import fs from 'fs/promises';

async function countLines() {
  try {
    // 读取文件内容
    const data = await fs.readFile('output.txt', 'utf8');

    // 初始化计数器
    let insert = 0;
    let deleteCount = 0;
    const lines = data.split('\n');

    // 遍历每行并更新计数器
    lines.forEach(line => {
      console.log(`Processing line: ${line}`); // 调试输出
      const parts = line.trim().split(/\s+/);
      if (parts.length >= 2) {
        const insertLines = parseInt(parts[0], 10);
        const deleteLines = parseInt(parts[1], 10);

        // 检查转换结果是否为数字
        if (isNaN(insertLines) || isNaN(deleteLines)) {
          console.error(`Invalid number found in line: ${line}`); // 错误处理
        } else {
          insert += insertLines;
          deleteCount += deleteLines;
        }
      }
    });

    // 输出结果
    console.log(`Inserted lines: ${insert}`);
    console.log(`Deleted lines: ${deleteCount}`);
    console.log(`Total lines changed: ${insert - deleteCount}`);
  } catch (err) {
    console.error('Error reading the file:', err);
  }
}

// 调用异步函数
countLines();

3.执行脚本,得到结果输出

Inserted lines: 6622
Deleted lines: 1300
Total lines changed: XXXX

附加信息

  • 如何运行脚本
  1. 确保您的系统上安装了 Node.js。在命令行中输入 node --version 来检查。
  2. 将上述脚本保存为一个文件,例如 count_lines.js。
  3. 在包含 count_lines.js 和 output.txt 文件的目录中打开命令行窗口。 运行脚本:node count_lines.js。

注意事项

确保 output.txt 文件的格式与 git log --numstat 命令输出的格式一致。

如果 output.txt 文件包含非数字的行或格式不正确的行,脚本可能会抛出错误。您可以在脚本中添加额外的错误处理逻辑来处理这些情况。

通过上述 Node.js 脚本,您应该能够轻松地统计出 output.txt 文件中插入和删除的行数,从而满足您的需求。如果仍然遇到问题,请检查 output.txt 文件的格式,并确保 Node.js 脚本能够正确地读取和处理这个文件。

  • 免责声明: 本文由本人和comate共同完成,请仔细甄别
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值