新增:文档体系重构+CHANGELOG补充+发布产物清理
This commit is contained in:
69
docs/04-功能迭代/GO-DESK-5.Git集成/Git集成方案.md
Normal file
69
docs/04-功能迭代/GO-DESK-5.Git集成/Git集成方案.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# Git 集成方案
|
||||
|
||||
> 调研日期:2026-04-11
|
||||
> 状态:已调研,待实现
|
||||
|
||||
## 1. 判定 Git 仓库
|
||||
|
||||
从目标路径逐级向上查找 `.git` 目录:
|
||||
|
||||
```bash
|
||||
git -C <path> rev-parse --is-inside-work-tree
|
||||
# 返回 "true" = 是 git 仓库
|
||||
```
|
||||
|
||||
Go 实现:`filepath.Walk` 向上遍历,检查 `.git` 目录存在性。
|
||||
|
||||
## 2. 可实现功能
|
||||
|
||||
| 功能 | 难度 | 命令 |
|
||||
|------|------|------|
|
||||
| 文件状态(修改/新增/删除/未跟踪) | 低 | `git status --porcelain=v1 <file>` |
|
||||
| 文件/文件夹提交历史 | 低 | `git log --oneline -20 -- <path>` |
|
||||
| 当前文件与 HEAD 的 diff | 中 | `git diff HEAD -- <file>` |
|
||||
| 某行代码 blame | 低 | `git blame <file>` |
|
||||
| 当前分支名 | 低 | `git branch --show-current` |
|
||||
|
||||
## 3. 实现架构
|
||||
|
||||
### Go 后端(~200 行)
|
||||
|
||||
```
|
||||
internal/git/
|
||||
├── git.go # 核心逻辑:判定仓库、执行命令、解析输出
|
||||
├── status.go # 文件状态查询
|
||||
├── history.go # 提交历史
|
||||
├── diff.go # 文件差异
|
||||
└── blame.go # 行级追溯
|
||||
```
|
||||
|
||||
关键接口设计:
|
||||
- `IsGitRepo(path string) bool` — 判定是否为 git 仓库
|
||||
- `GetFileStatus(path string) (string, error)` — 返回 M/A/D/? 状态码
|
||||
- `GetFileHistory(path string, limit int) ([]Commit, error)` — 提交历史
|
||||
- `GetFileDiff(path string) (string, error)` — diff 文本
|
||||
- `BlameFile(path string) ([]BlameLine, error)` — blame 结果
|
||||
|
||||
### 前端(~100 行)
|
||||
|
||||
- **文件列表**:图标列增加 git 状态小标记(M=修改, A=新增, D=删除, ?=未跟踪)
|
||||
- **右键菜单**:git 仓库内显示「查看历史」「查看 Diff」「Blame」等选项
|
||||
- **弹窗组件**:提交历史列表 / Diff 查看 / Blame 视图
|
||||
|
||||
### 调用方式
|
||||
|
||||
Go 侧通过 `os/exec.Command("git", "-C", repoPath, ...)` 执行系统 git 命令,
|
||||
解析 stdout 返回结构化数据给前端。
|
||||
|
||||
## 4. 前提条件
|
||||
|
||||
- 系统需安装 Git(Windows 上基本都有)
|
||||
- 仅在有 `.git` 的目录下激活相关功能
|
||||
- 大文件/二进制文件不做 diff/blame
|
||||
|
||||
## 5. 注意事项
|
||||
|
||||
- `git -C <path>` 确保 git 命令在正确仓库上下文执行
|
||||
- `--porcelain=v1` 输出格式稳定,适合程序解析
|
||||
- 中文路径需注意编码(UTF-8)
|
||||
- 性能:避免频繁调用 git 命令,考虑缓存结果
|
||||
Reference in New Issue
Block a user