---
name: git-blame
description: |
  代码追溯专家 - 查找代码修改者、关联PR、获取改动背景。
  触发词: 谁改的, 谁写的, blame, 追溯, 找作者, 这行代码, 提交记录, 谁提交的, PR, 代码历史
---

# 代码追溯专家

> 帮助定位代码修改者，获取改动背景，便于协作解决问题

---

## 执行声明规范

### 开始执行时

```markdown
🔍 **正在执行: 代码追溯** (`#git-blame`)

✅ 已加载 Skill 指引
⭕ 当前步骤: 识别追溯目标
```

### 执行完成时

```markdown
✅ **执行完成**: 代码追溯

参考来源:
- Skill: `#git-blame`
- 数据来源: [本地 Git / MCP DevOps]

产出物: 代码追溯报告
```

---

## 适用场景

- Debug 时需要找到问题代码的作者
- 想了解某段代码为什么这样写
- 需要找到相关 PR 查看讨论上下文
- 想知道某个文件最近被谁修改过

---

## 工作流程

```
步骤1: 识别追溯目标
   ↓
步骤2: 执行代码追溯
   ↓
步骤3: 获取关联 PR
   ↓
步骤4: 输出追溯报告
```

---

## 执行步骤

### 步骤1: 识别追溯目标

**目标**: 确定要追溯的代码位置

**识别信息**:
- 文件路径
- 行号范围（可选）
- 代码片段（可选）

**判断代码位置**:

| 情况 | 处理方式 |
|------|---------|
| 工作区内的文件 | 使用本地 `git blame` |
| 远程仓库文件 | 使用 `mcp_azuredevops_list_commits` |
| 用户提供代码片段 | 先搜索定位，再追溯 |

### 步骤2: 执行代码追溯

#### 方式A: 本地 Git（工作区代码）

```bash
# 查看某行的提交信息
git blame -L <起始行>,<结束行> <文件路径>

# 查看提交详情
git show <commit-hash> --stat

# 查看提交的完整信息
git log -1 --format="%H%n%an%n%ae%n%s%n%b" <commit-hash>
```

#### 方式B: MCP DevOps（远程仓库）

```
调用: mcp_azuredevops_list_commits
参数:
  - repositoryId: 仓库名称
  - branchName: 分支名
  - top: 返回数量
```

从返回结果提取：
- `author.name` - 作者姓名
- `author.email` - 作者邮箱
- `comment` - 提交信息（含 PR 号）
- `files[].path` - 修改的文件
- `files[].patch` - 具体改动

### 步骤3: 获取关联 PR

**从 commit message 提取 PR 号**:

常见格式：
- `已合并 PR 236436: ...`
- `Merged PR 236436: ...`
- `(#236436)`

**获取 PR 详情**:

```
调用: mcp_azuredevops_get_pull_request_comments
参数:
  - repositoryId: 仓库名
  - pullRequestId: PR 号
```

### 步骤4: 输出追溯报告

使用以下模板输出结果：

---

## 输出模板

```markdown
## 🔍 代码追溯报告

### 📍 追溯目标
- **文件**: `path/to/file.cs`
- **行号**: L100-L110
- **代码片段**: [如有]

### 👤 修改者信息
| 字段 | 值 |
|------|-----|
| 作者 | [姓名] |
| 邮箱 | [email] |
| 时间 | [日期] |
| Commit | [hash 前8位] |

### 🔗 关联 PR
- **PR #[号码]**: [标题]
- **链接**: [DevOps 链接]

### 📝 改动说明
[commit message 或 PR 描述]

### 💬 PR 讨论摘要
[如果有评论]

### 📌 后续建议
- 联系 **[作者]** 了解改动背景
- 查看 PR 中的测试用例
- [其他建议]
```

---

## 常用命令速查

| 场景 | 命令 |
|------|------|
| 查看某行作者 | `git blame -L 100,110 file.cs` |
| 查看文件历史 | `git log --oneline -10 -- file.cs` |
| 查看提交详情 | `git show <hash>` |
| 查找包含关键词的提交 | `git log --grep="关键词" --oneline` |
| 查看某人的提交 | `git log --author="姓名" --oneline` |

---

## 相关 Skill

| Skill | 用途 |
|-------|------|
| `#expert-index` | 需要找对应模块专家时 |

---

## 注意事项

1. **隐私**: 仅展示工作相关信息，不泄露个人隐私
2. **沟通**: 找到作者后，建议先了解背景再提问
3. **上下文**: 关注 PR 讨论，可能有重要决策记录
