mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-22 09:14:25 +08:00
changed.修改了PLONDS上传逻辑
This commit is contained in:
145
analyze_commits.py
Normal file
145
analyze_commits.py
Normal file
@@ -0,0 +1,145 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
分析当天的 Git 提交并生成 Markdown 报告
|
||||
"""
|
||||
|
||||
import os
|
||||
import subprocess
|
||||
from datetime import datetime, date
|
||||
|
||||
|
||||
def run_git_command(cmd):
|
||||
"""运行 git 命令并返回输出"""
|
||||
try:
|
||||
result = subprocess.run(
|
||||
cmd,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
encoding='utf-8',
|
||||
errors='replace'
|
||||
)
|
||||
return result.returncode, result.stdout, result.stderr
|
||||
except Exception as e:
|
||||
return -1, "", str(e)
|
||||
|
||||
|
||||
def main():
|
||||
# 设置日期范围
|
||||
today_start = datetime.combine(date.today(), datetime.min.time())
|
||||
today_end = datetime.now()
|
||||
|
||||
output_dir = "docs/auto_commit_md"
|
||||
|
||||
# 创建输出目录
|
||||
if not os.path.exists(output_dir):
|
||||
os.makedirs(output_dir, exist_ok=True)
|
||||
print(f"创建目录: {output_dir}")
|
||||
|
||||
# 获取当天的所有提交
|
||||
since_str = today_start.strftime("%Y-%m-%d %H:%M:%S")
|
||||
until_str = today_end.strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
print(f"正在获取 {since_str} 到 {until_str} 之间的提交...")
|
||||
|
||||
cmd = [
|
||||
"git", "log",
|
||||
f"--since={since_str}",
|
||||
f"--until={until_str}",
|
||||
"--pretty=format:%H|%an|%ai|%s"
|
||||
]
|
||||
|
||||
code, stdout, stderr = run_git_command(cmd)
|
||||
|
||||
if code != 0:
|
||||
print(f"错误: 获取提交失败: {stderr}")
|
||||
return
|
||||
|
||||
if not stdout.strip():
|
||||
print("当天没有新的提交。")
|
||||
return
|
||||
|
||||
commits = stdout.strip().split('\n')
|
||||
print(f"找到 {len(commits)} 个提交")
|
||||
|
||||
for line in commits:
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
|
||||
parts = line.split('|', 3)
|
||||
if len(parts) < 4:
|
||||
continue
|
||||
|
||||
hash_full = parts[0]
|
||||
author = parts[1]
|
||||
commit_date = parts[2]
|
||||
message = parts[3]
|
||||
|
||||
short_hash = hash_full[:7]
|
||||
date_obj = datetime.fromisoformat(commit_date.replace('Z', '+00:00'))
|
||||
date_str = date_obj.strftime("%Y%m%d")
|
||||
output_file = os.path.join(output_dir, f"{date_str}_{short_hash}.md")
|
||||
|
||||
print(f"处理提交: {short_hash} - {message}")
|
||||
|
||||
# 获取统计信息
|
||||
cmd_stat = ["git", "show", "--stat", "--stat-width=120", "--stat-name-width=80", hash_full]
|
||||
_, stat_out, _ = run_git_command(cmd_stat)
|
||||
|
||||
# 获取完整 diff
|
||||
cmd_diff = ["git", "show", hash_full]
|
||||
_, diff_out, _ = run_git_command(cmd_diff)
|
||||
|
||||
# 构建 Markdown 内容
|
||||
markdown = f"""# Git 提交分析报告
|
||||
|
||||
## 基本信息
|
||||
|
||||
| 项目 | 内容 |
|
||||
|------|------|
|
||||
| **提交哈希** | {hash_full} |
|
||||
| **短哈希** | {short_hash} |
|
||||
| **作者** | {author} |
|
||||
| **提交时间** | {commit_date} |
|
||||
|
||||
## 提交信息
|
||||
|
||||
{message}
|
||||
|
||||
## 变更统计
|
||||
|
||||
```
|
||||
{stat_out}
|
||||
```
|
||||
|
||||
## 详细变更
|
||||
|
||||
```diff
|
||||
{diff_out}
|
||||
```
|
||||
|
||||
## 代码审查要点
|
||||
|
||||
> 本部分由系统自动生成,需要人工审查确认。
|
||||
|
||||
- 请检查代码变更是否符合项目规范
|
||||
- 请检查是否有潜在的 bug 或安全问题
|
||||
- 请检查测试是否覆盖了新代码
|
||||
- 请检查文档是否需要更新
|
||||
|
||||
---
|
||||
*报告生成时间: {datetime.now().strftime("%Y-%m-%d %H:%M:%S")}*
|
||||
"""
|
||||
|
||||
# 保存文件
|
||||
with open(output_file, 'w', encoding='utf-8') as f:
|
||||
f.write(markdown)
|
||||
|
||||
print(f"已保存: {output_file}")
|
||||
|
||||
print(f"\n完成!共生成 {len(commits)} 份报告。")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user