Skip to content

feat(diff): 文件树标注合并冲突文件#114

Merged
huhamhire merged 1 commit into
devfrom
feat/filetree-conflict-marker
Jun 23, 2026
Merged

feat(diff): 文件树标注合并冲突文件#114
huhamhire merged 1 commit into
devfrom
feat/filetree-conflict-marker

Conversation

@huhamhire

Copy link
Copy Markdown
Owner

背景

有冲突的 PR 此前只在 PR 头部有一个总的「冲突」标记,用户无法直接知道哪些文件会冲突,只能逐个查看或到平台上看。

改动

  • 有冲突的 PR(pr.hasConflict)打开 Diff 时,文件树对会冲突的文件在右侧状态圆点左侧标一个琥珀色三角警示图标,hover 提示「合并到目标分支会产生冲突」,一眼定位冲突所在。
  • 冲突文件由后端就 PR 目标分支 tip ⟂ 源 head 跑本地 git merge-tree --write-tree --name-only -z 试合并解析得到(git ≥ 2.38):
    • 新增 IPC 通道 diff:listConflictFiles;仅 pr.hasConflict 为真时才实际试合并,否则直接返回空(省一次本地试合并)。
    • 试合并失败 / git 过旧 / 无法判定时保守返回空(不误标冲突,不报错)。
    • merge-tree 冲突时退出码为 1 且把结果写到 stdout,simple-git 会因非零退出吞掉 stdout,故该命令走 execFile 自行捕获。
  • 渲染层:新增 useConflictFiles hook + ConflictIcon(内联 SVG 三角叹号)+ .tree-conflict 样式 + fileTree.conflictTitle 四语言文案。

测试

  • packages/repo-mirror:新增 parseMergeTreeConflictsZ 解析单测(含路径含空格 / 去重 / 无冲突段)+ listConflictFiles 集成测试(真实建两分支同行冲突,断言仅冲突文件命中、同 sha 自合并为空)。
  • 本地通过 lint / typecheck / test / build 四关。

🤖 Generated with Claude Code

有冲突的 PR 打开 Diff 时,对会冲突的文件在状态圆点左侧标琥珀色三角警示
图标(hover 提示合并到目标分支会冲突)。冲突文件由后端就目标分支 tip ⟂
源 head 跑本地 git merge-tree --write-tree 试合并解析得到,新增
diff:listConflictFiles 通道,仅 pr.hasConflict 为真时实际试合并、失败保守不标记。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@huhamhire huhamhire added this to the 体验优化 milestone Jun 23, 2026
@huhamhire huhamhire added the enhancement New feature or request label Jun 23, 2026
@huhamhire huhamhire merged commit a9d2e5c into dev Jun 23, 2026
1 check passed
@huhamhire huhamhire deleted the feat/filetree-conflict-marker branch June 23, 2026 07:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant