Install
openclaw skills install commit-history-exporter检索并导出 SVN 和 Git 仓库中指定人员的提交记录及修改点信息。支持按作者、时间范围、项目路径过滤,可导出为 Markdown、CSV、JSON、Detailed 等格式。Detailed 格式包含完整提交日志。当用户说"导出某人的提交记录"、"查看提交历史"、"生成提交日志"、"导出代码提交记录"、"查看...
openclaw skills install commit-history-exporter检索并导出 SVN/Git 仓库中指定人员的提交记录和修改详情,支持获取提交日志(commit message)。
根据用户请求,识别以下参数:
执行前检查目标目录:
.git 目录.svn 目录根据版本控制系统和认证状态选择导出方式:
使用 scripts/export_git_commits.sh
有认证: 使用服务器获取完整提交日志 无认证: 使用本地工作副本数据库获取基本信息
使用 scripts/export_svn_commits.sh
适合人工阅读和文档记录,包含:
完整报告,包含:
注意: SVN 仓库获取提交日志需要认证。
适合数据分析和导入其他系统:
适合程序处理和 API 调用:
# 导出指定作者的所有提交记录(Markdown 格式)
./scripts/export_git_commits.sh "张三"
# 导出指定作者和时间范围的提交记录
./scripts/export_git_commits.sh "张三" "2024-01-01" "2024-12-31"
# 导出完整报告(包含提交日志)- Detailed 格式
./scripts/export_git_commits.sh "张三" "" "" "detailed"
# 指定项目路径
./scripts/export_git_commits.sh "张三" "" "" "detailed" "/path/to/project"
# 导出指定作者的提交记录(无认证,基本信息)
./scripts/export_svn_commits.sh "liangyixiong"
# 导出完整报告(包含提交日志)- 需要认证
./scripts/export_svn_commits.sh "liangyixiong" "" "" "detailed" "/path/to/svn" "用户名" "密码"
# 导出指定修订号范围
./scripts/export_svn_commits.sh "" "100" "500" "detailed" "/path/to/svn"
# Windows 路径示例(WSL 环境)
./scripts/export_svn_commits.sh "liangyixiong" "" "" "detailed" "/mnt/d/SVN/L1_Card/Module_PCD"
SVN 是集中式版本控制系统,提交日志存储在服务器端。要从服务器获取完整的提交日志,需要认证。
当无法连接 SVN 服务器时,脚本会:
wc.db) 获取基本信息方法 1: 在命令中提供
./scripts/export_svn_commits.sh "作者" "" "" "detailed" "/path/to/svn" "用户名" "密码"
方法 2: 安装 SVN 命令行工具后配置认证缓存
方法 3: 使用 Windows TortoiseSVN
~/.subversion/auth/C:\Users\<用户名>\AppData\Roaming\Subversion\auth\当无法获取 SVN 认证时,可使用 Python 直接从本地数据库获取基本信息:
import sqlite3
from datetime import datetime
db_path = '/path/to/project/.svn/wc.db'
conn = sqlite3.connect(db_path)
cursor = conn.cursor()
# 查询指定作者的修改记录
cursor.execute("""
SELECT
changed_revision,
changed_date,
changed_author,
local_relpath,
kind
FROM NODES
WHERE wc_id = 1 AND op_depth = 0
AND changed_author LIKE '%作者名%'
ORDER BY changed_revision DESC
""")
for rev, date_ts, author, path, kind in cursor.fetchall():
date = datetime.utcfromtimestamp(date_ts / 1000000)
print(f"r{rev} | {date} | {author} | {path}")
详见 references/svn_database_query.md
用户: "导出张三 2024 年的所有 Git 提交记录,包含提交备注"
执行:
./scripts/export_git_commits.sh "张三" "2024-01-01" "2024-12-31" "detailed"
用户: "查看最近一个月所有人的提交记录"
执行:
./scripts/export_git_commits.sh "" "1 month ago" "" "detailed"
用户: "导出 liangyixiong 在 Module_PCD 项目的 SVN 提交记录,包含提交日志"
执行:
./scripts/export_svn_commits.sh "liangyixiong" "" "" "detailed" "/mnt/d/SVN/L1_Card/Module_PCD"
如果需要认证:
./scripts/export_svn_commits.sh "liangyixiong" "" "" "detailed" "/mnt/d/SVN/L1_Card/Module_PCD" "用户名" "密码"
用户: "统计李四的代码提交数量"
方法 1(直接使用命令):
git log --author="李四" --oneline | wc -l
方法 2(导出后统计):
./scripts/export_git_commits.sh "李四" "" "" "csv"
查看 references/git_commands.md 了解:
查看 references/svn_commands.md 了解:
查看 references/svn_database_query.md 了解: