用途
git-weekly-report 用于从 Git 提交日志中提取信息,并生成结构化的日报或周报。其目标是把提交历史复用为站会、日报、周报或项目总结的素材,输出内容按已完成事项、进行中工作、亮点、计划与风险等类别组织。
主要能力
- 按日期范围提取 Git 提交日志,支持日报、周报或自定义区间。
- 支持按作者过滤提交,默认包含所有作者。
- 支持指定一个或多个仓库路径,默认使用当前工作目录。
- 输出结构化 JSON,包含日期范围、作者过滤条件、按仓库分组的提交列表以及总提交数。
- 每条提交包含 hash、short_hash、author、date、subject、body、refs 等字段。
- 依据 weekly-report-format.md 对提交进行分类,依据 weekly-report-template.md 生成最终报告结构。
- 当单个仓库提交超过 50 条时,按类别汇总而非逐条列出,并保留 short hash 以便追溯。
- 可从提交信息中识别进行中工作的信号,如 WIP、TODO、部分实现或未完成的功能分支。
- 可识别亮点,如破坏性变更、安全修复、主要功能或涉及关键路径的提交。
使用方式
- 确定日期范围与报告类型:
- 日报:用户提到“昨天”“今天”或“日报”时,默认 --since 为昨天,--until 为今天。
- 周报:用户提到“本周”或“周报”时,默认 --since 为上周一,--until 为今天。
- 其他情况:默认最近 7 天,并接受用户覆盖。
- 确定作者过滤条件,默认所有作者。
- 确定仓库路径,默认当前工作目录;若涉及多个项目则收集所有路径。
- 运行脚本:
python3 scripts/git_weekly_report.py --since <YYYY-MM-DD> --until <YYYY-MM-DD> [--author <name>] [--repo <path1> <path2> ...]
脚本用法示例:
# 默认:最近 7 天,当前目录
python3 scripts/git_weekly_report.py
# 指定日期范围
python3 scripts/git_weekly_report.py --since 2026-04-21 --until 2026-04-28
# 按作者过滤
python3 scripts/git_weekly_report.py --since 2026-04-21 --author "Yang"
# 多个仓库
python3 scripts/git_weekly_report.py --since 2026-04-21 --repo /path/to/project-a /path/to/project-b
# 保存输出到文件
python3 scripts/git_weekly_report.py --since 2026-04-21 --output /tmp/weekly.json
# 包含合并提交
python3 scripts/git_weekly_report.py --since 2026-04-21 --merges
- 读取 JSON 输出,脚本提供按仓库分组的结构化提交数据。
- 使用 weekly-report-format.md 作为分类指南,按类型对提交进行分类。
- 使用 weekly-report-template.md 作为生成最终报告时的输出结构。
- 对于“下周计划”和“风险”部分,需询问用户是否有补充项,因为这些无法从 Git 日志推导;日报中除非用户要求,否则省略这些部分。
- 呈现最终 Markdown 报告,如用户要求可保存到文件。
JSON 输出结构
- date_range:{ since, until },查询的日期范围。
- author_filter:字符串或 null,应用的作者过滤条件。
- repositories:数组,每项包含 { path, name, commit_count, commits }。
- total_commits:所有仓库的提交总数。
- 每条提交包含:hash、short_hash、author、date、subject、body、refs。
适用场景
- 从 Git 提交生成周报或日报。
- 总结昨天或今天的 Git 活动。
- 总结一个或多个仓库的近期 Git 活动。
- 回顾某个日期范围内完成的工作。
- 将提交历史整理为分类报告。
- 从提交准备每日站会摘要。
限制
- 不适用于对具体变更进行代码审查(应使用 code-reviewer)。
- 不适用于详细检查单条提交。
- 不适用于除日志提取之外的 Git 操作(如分支、合并等)。
- 不适用于非 Git 相关的报告生成。
- “下周计划”和“风险”部分无法从 Git 日志推导,需用户补充。
- 日报中默认省略计划与风险部分,除非用户明确要求。