Issue 140 Validation - ShaoClean/Alune GitHub Wiki

文件树 Git 忽略状态补充验收

问题与结果

原始文件树没有获取条目的 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 目录,便于对照名称颜色以及可用的预览。

主题 修改前 修改后
浅色 Alune 忽略文件修改前浅色 Alune 忽略文件灰色显示浅色
深色 Alune 忽略文件修改前深色 Alune 忽略文件灰色显示深色

验证范围与回退

Windows、Linux 原生桌面界面未进行现场验收。SSH 验证使用真实协议与隔离测试服务;外部部署环境未验证。忽略规则变化的界面验收使用显式刷新,后台自动刷新沿用初始记录中的未验证状态。

目录读取增加一次仅针对当前返回条目的批量 Git 查询;查询失败时返回可读错误。无数据库或持久化迁移。回退代码提交可以移除忽略装饰;Wiki 与代码仓库分别维护。