方法一:使用git log + awk
使用工具: git bush
- 验证 git log 输出:
首先,运行 git log --since=“2025-01-01” --until=“2025-02-28” --author=“testName” --numstat 命令,检查它的输出是否符合预期。
确保输出包含 numstat 格式的统计信息,而不是错误消息或空输出。 - 直接在 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 + 脚本执行
- 第一步 相同的
git log --since="2025-01-01" --until="2025-02-28" --author="testName" --numstat > output.txt
- 创建脚本文件,代码贴在下面自取
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
附加信息
- 如何运行脚本
- 确保您的系统上安装了 Node.js。在命令行中输入 node --version 来检查。
- 将上述脚本保存为一个文件,例如 count_lines.js。
- 在包含 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共同完成,请仔细甄别


5902

被折叠的 条评论
为什么被折叠?



