Repository navigation
Issue 140 Validation
- 日期:2026-10-07
- 状态:已实现并完成以下验收,PR 待审阅
- 关联 Issue:文件树按 Git 状态显示颜色 #140
- 关联 PR:Git 忽略文件灰色显示 #207
- 设计与初始验收:文件树 Git 状态配色
- 代码提交:67956bf
原始文件树没有获取条目的 Git 忽略状态,状态装饰也跳过 ignored,因此忽略文件与干净文件使用相同文字颜色。
现在目录条目通过一次批量 git check-ignore 返回可选的 ignored 标记。文件与目录使用 VS Code 默认的 gitDecoration.ignoredResourceForeground:浅色 #8E8E90,深色 #8C8C8C;取值已对照本机 VS Code Git 扩展配置。选中后的文件名继续显示灰色,没有额外状态字母,标题及可访问名称包含“已忽略”。文件选择、目录展开和内容预览均可使用。
Git 判断覆盖根及嵌套 .gitignore、.git/info/exclude、core.excludesFile 和 ! 例外,并通过 Git 索引排除已跟踪文件。忽略的子项不会使正常父目录变灰;现有改动状态仍具有较高优先级。
输入与输出使用 NUL 分隔,输入增加 ./ 前缀,并覆盖传输层的默认 --literal-pathspecs,避免 check-ignore 拒绝该模式或将文件名开头的 : 解释为 pathspec 特殊语法。
macOS arm64;脚本运行于 Node.js 25.5.0,界面运行于 Electron 44.2.0。使用临时真实 Git 仓库与本机隔离 SSH/SFTP 测试服务。
| 检查 | 实际结果 |
|---|---|
在 apps/web 执行 node --import ./tests/resolve-ts.mjs --test tests/files-git-status.test.mjs tests/files-view.test.mjs
|
31 项通过 |
node --test packages/ssh-client/tests/repository-files.test.cjs |
8 项通过,包含本地与 SSH 生产传输实现 |
npm run build -w @alune/shared、npm run build -w @alune/ssh-client、npm run build -w web、npm run build -w server
|
均通过;web 构建仍提示现有 bundle 大小 |
| 本地与 SSH、浅色与深色的实际界面 | 名称颜色分别为 rgb(142, 142, 144) 与 rgb(140, 140, 140)
|
| 忽略目录展开及内部文件 | 目录与内部文件均标灰,正常父目录保留普通颜色 |
已跟踪的 tracked.log 与 !keep.log 例外 |
已跟踪文件正常显示,例外文件按未跟踪状态显示绿色 |
选择 ignored.log 并预览内容 |
选中后仍为灰色,“已忽略”提示正确,没有状态字母,内容可正常阅读 |
| 修改忽略规则后点击“刷新仓库” | 根条目及已展开目录的旧忽略装饰消失 |
| 特殊文件名 | 中文、空格、引号、换行、反斜杠、前导短横线、:(glob) 与通配符字符均通过真实 Git 测试 |
git diff --check、commitlint、pre-push 版本检查 |
通过 |
截图使用独立测试数据,仅裁剪实际文件树与预览区域,没有修改界面内容。修改前使用 development 基线 402df29 的前端,修改后使用本 PR 的忽略状态实现。两组均选择 ignored.log、展开 ignored 目录,便于对照名称颜色以及可用的预览。
| 主题 | 修改前 | 修改后 |
|---|---|---|
| 浅色 | ![]() |
![]() |
| 深色 | ![]() |
![]() |
Windows、Linux 原生桌面界面未进行现场验收。SSH 验证使用真实协议与隔离测试服务;外部部署环境未验证。忽略规则变化的界面验收使用显式刷新,后台自动刷新沿用初始记录中的未验证状态。
目录读取增加一次仅针对当前返回条目的批量 Git 查询;查询失败时返回可读错误。无数据库或持久化迁移。回退代码提交可以移除忽略装饰;Wiki 与代码仓库分别维护。
设计文档首页 · Alune 品牌说明 · 维护约定 · 代码仓库



