Repository navigation
Issue 128 Validation
- 设计:Issue-128
- Issue:https://github.com/ShaoClean/Alune/issues/128
- PR:https://github.com/ShaoClean/Alune/pull/131
- 日期:2026-09-30(Asia/Shanghai)
- 代码:
89afddcfcc4aea10641888f366aafb17245a8653 - 环境:macOS arm64、Node.js 25.5.0、npm 11.8.0、Git 2.43.1
- 数据:临时 Git 仓库、本地 bare 远端、临时 SQLite;SSH 使用绑定 127.0.0.1 的 ssh2 fixture,不连接用户服务器。
| 命令 / 场景 | 结果 |
|---|---|
npm test -w server -- --runInBand |
22 套件、238 项通过 |
npm test -w web |
184 项通过;保留 #129 交互测试并验证远程类型传递 |
npm test -w @alune/ssh-client |
136 项通过,2 项 Windows 专用测试在 macOS 跳过;客户端代码与前轮验证一致 |
npm run build -w @alune/shared |
通过 |
npm run build -w @alune/ssh-client |
通过 |
npm run build -w server |
通过 |
npm run build -w web |
通过;存在现有 bundle 大小提示 |
git diff --check、Prettier、commitlint |
通过 |
新增 branch-switch.spec.ts 共 22 项,分别通过本地连接和真实回环 SSH 执行 Git。覆盖 HTTP 创建、重复选择、不同名称跟踪分支、多个跟踪分支优先当前分支、无上游及其他上游冲突、换名创建、多 remote、斜杠 remote 名称、本地 origin/ / remotes/ 字面名称、远程 HEAD 别名、失效 ref、非法名称、暂存与未暂存覆盖保护、执行失败及写锁释放。
使用 ego-browser 操作真实应用服务。截图仅含临时 fixture 仓库,无真实账户、凭据或服务器地址。
在独立基线 checkout badbd0e 构建运行,选择工具条里的 remotes/origin/feature/demo。工具条显示“游离 HEAD”;分支面板没有创建本地 feature/demo,远程行也没有切换按钮。

从工具条选择 origin/feature/demo,再从分支面板选择 origin/feature/panel。界面显示本地分支名、当前标记与对应 upstream;远程行提供切换入口。

同名分支未配置上游时,显示名称冲突。沿用 #129 的取消、切换现有分支、换名创建选项,不覆盖原分支或跟踪关系。

最终代码在 SSH 仓库从工具条创建 feature/demo,从分支面板创建 feature/panel,实际 upstream 分别为 origin/feature/demo 和 origin/feature/panel。同一事件周期连续点击工具条选项只发出一次切换请求;网络记录包含分支列表、提交历史与状态刷新。

本地冲突交互已逐项操作:取消保持原分支;选择现有 feature/conflict 保持原来的无上游状态;换名创建 feature/alternative 后,其 upstream 为 origin/feature/conflict。
未提交改动保护通过本地与真实 SSH 自动测试核验:文件、暂存区、HEAD、分支集合与 upstream 不变,失败后可再次操作。
本次未手工验证 Windows / Linux 桌面界面、旧 Git 版本、外部 SSH 主机及真实远端凭据。回环 SSH 验证协议与执行链路,不等同于外部网络、跳板机或认证环境验收。
设计文档首页 · Alune 品牌说明 · 维护约定 · 代码仓库