-
Notifications
You must be signed in to change notification settings - Fork 0
Issue 36 Validation
- 日期:2026-09-16
- Issue:https://github.com/ShaoClean/remote-git/issues/36
- PR:https://github.com/ShaoClean/remote-git/pull/37
- 设计
- 代码提交:26cb7ad4352fabe0398397b537d09154a88348aa
- 环境:macOS 15.5 arm64、Node.js 25.5.0、Electron 44.2.0;网页通过 ego-browser 验收。
| 命令 / 场景 | 结果 |
|---|---|
| npm run test -w @remote-git/ssh-client | 61 项:59 通过,2 个 Windows 专属测试跳过 |
| npm run test -w web | 55 项通过 |
| npm run test -w server -- --runInBand repository git.service new-file-deletion | 4 个套件、13 项通过 |
| npm run desktop:build | 5 个构建任务成功,含图标检查、类型检查、前端、后端及 Electron 暂存 |
| npm run desktop:test 的 test:unit 阶段 | 41 项通过 |
| 构建产物在普通临时目录运行 desktop/scripts/smoke.mjs | write / restore 两阶段通过;新增历史测试和已有工作区、设置、Diff、更新、数据恢复回归通过 |
| git diff --check | 通过 |
| npm run test -w server -- --runInBand | 9 个套件通过,4 个套件失败;62 项通过、4 项失败,详见基线问题 |
Git 测试使用临时真实仓库,包含本地独有分支、upstream 远程跟踪分支、分叉、合并、三父提交、普通及嵌套附注标签、标签独有提交。覆盖超过 150 条历史、49 / 50 / 51 条边界、空仓库、游离 HEAD、浅克隆加深、读取期间引用变化、查询参数与真实 SSH 传输。提交哈希及父哈希逐条与 Git 原始拓扑输出比对。
前端测试检查分页去重、服务端偏移量、重复请求、追加失败重试、刷新覆盖旧请求、跨仓库迟到响应、引用变化阻止追加,以及分叉/多父合并/孤立历史的轨道与跨页一致性。
Electron 新增 155 条历史的集成场景,检查文件 Diff、末尾按钮消失、虚拟渲染、追加后滚动与选择保留、刷新保留/清除选中项、历史变化提示、键盘调整上下高度、窄窗口返回列表。
使用 apps/web/tests/history-fixture.cjs 提供隔离 Git 仓库,经生产 GitCommands 查询;地址、账号和仓库均为测试数据,未连接用户配置的服务器。
| 场景 | 结果 |
|---|---|
| 1440 × 1000 提交图与详情 | 本地、远程独有提交、标签、真实分叉合并可见;详情在下方 |
| 连续加载 50 → 100 → 150 → 160 | 到达历史末尾,已加载内容、选择及滚动位置保留 |
| 追加失败及重试 | 保留 50 条,重试后追加到 100 条 |
| 浏览期间新增提交 | 加载下一页显示历史变化提示,保留原记录,刷新后恢复 |
| 选择 merge 提交、graph.ts 文件 | 第一父提交比较正确;统一与分栏均显示新增行 |
| 600 × 760 详情与返回 | 显示详情,返回恢复 180px 滚动位置 |
| 320 × 720 | 表格内部滚动;body 宽度与视口均为 320px,无页面级横向溢出 |
| 切换至空仓库 | 显示“暂无提交”,无上个仓库的历史或详情残留 |
改造前,历史位于窄栏,单列装饰线无法表达分叉:

改造后,多列拓扑与完整宽度:

选中合并提交后,下方查看文件和 Diff:

600px 下的文件详情与分栏 Diff:

320px 下保留可横向浏览的提交表:

浏览期间历史变化时保留现有列表:

服务端全量测试的 4 个失败来自 ConnectionController、FileController、GitController、FileService 的既有测试未注册所需 provider。已在未修改的 development / 3312132 基线副本执行同一组测试复现,未在本 PR 扩大范围修复。
在隐藏的 .cindy-worktrees 目录直接运行 npm run desktop:test 时,既有静态文件服务对绝对路径中的隐藏目录返回 404。保持构建产物不变,复制到普通临时目录后,通过原 smoke.mjs 完成 write / restore 两阶段。重现方式:
mkdir -p /tmp/remote-git-36-run/dist
cp -R apps/desktop/dist/app /tmp/remote-git-36-run/dist/
# 在 /tmp/remote-git-36-run 中运行本仓库 apps/desktop/scripts/smoke.mjs 的绝对路径
node <checkout>/apps/desktop/scripts/smoke.mjs
前端构建仍有既有大 chunk 提示。Windows / Linux 原生环境及真实远程 Windows SSH 主机本次未验证;不得将 macOS 上的测试结果视为这些平台已完成验收。