package git import "context" // DiffStat 返回单个 commit 的变更摘要(git show --stat),供自动文档生成喂给 // LLM 一个有界的改动概览。commitSHA 由上层从可信来源(git log / commit 返回值) // 取得,不接受用户任意输入。--no-color 保证输出稳定,-M 检测重命名。 func (r *DefaultRunner) DiffStat(ctx context.Context, dir, commitSHA string) (string, error) { ctx, cancel := withCtx(ctx, r.cfg.OpsTimeout) defer cancel() out, _, err := r.exec(ctx, dir, nil, "show", "--no-color", "--stat", "--format=%H%n%an%n%s%n%n%b", "-M", commitSHA) if err != nil { return "", err } return string(out), nil }