释放已完成的嵌套仓库扫描记录¶
scanNestedRepos 在扫描完成前,将每个已消费的 TraversalFolder 都保留在其广度优先队列中。这些记录在其目录处理完成后,仍保留路径段和继承的已解析忽略规则。释放每个已消费槽位并偶尔压缩空前缀,可在保持遍历顺序的同时移除这种临时保留。
运行¶
运行器使用仓库的进程启动器启动一个 Node 子进程,带有强制 GC、256 MiB 旧空间限制和 15 秒超时。它打包了实际的扫描和忽略规则解析器。一个观察钩子记录弱引用和标量队列计数。一个有界注入文件系统会暂停一次目录读取;不会启动应用窗口、PTY、SSH 连接或原生监视器。未使用的本地 Git 检测器是一个抛出异常的桩,确保注入文件系统拥有所有探测。
测试夹具包含 96 个分支,每个分支有 64 条不同的忽略规则和 1 个子目录。它会暂停倒数第二个子目录读取,留下 1 个待处理目录。每次观察前都有 4 轮由事件循环分隔的 GC。
| 观察项 | 之前 | 槽位释放对照 | 修复后 |
|---|---|---|---|
| GC 后存活的已完成子记录 | 94 / 94 | 0 / 94 | 0 / 94 |
| 其继承的规则数组在 GC 后存活 | 94 / 94 | 0 / 94 | 0 / 94 |
| 扫描完成后观察到的存活记录 | 0 | 0 | 0 |
| 访问的目录总数 | 193 | 193 | 193 |
所有变体都以完全相同的顺序访问相同的目录,并返回相同的空结果。基线仅在内存中回滚 fix.patch。诊断对照仅在该基线上添加已消费槽位清空,不包含压缩;它隔离了保留路径。修复变体执行当前队列实现。results.json 包含源哈希、精确队列计数、运行时来源、进程退出和超时状态。
窄范围源码回归测试套件在反复压缩下执行更广泛的遍历,包括 Windows 和 SSH POSIX 路径形式、继承的忽略规则、广度优先结果顺序、最大深度、仓库上限、取消和可选超时行为。全部 37 个发现、队列和扫描规则测试均通过,同时 Node 类型检查和聚焦 lint 检查也通过。现有发现测试覆盖本地文件系统和符号链接行为。
复用与范围¶
该更改遵循 ws-outbound-backpressure-queue.ts 中的已消费槽位释放模式,以及 runtime-rpc-call-queue.ts 中的摊销前缀压缩模式。它没有引入新的队列抽象、遍历策略、RPC 字段或主机边界。
基线源码与 v1.4.198 匹配;运行器在将 CRLF 行尾规范化为 LF 以支持 Windows 检出可移植性后,验证此命名标签比较。这不是对历史打包应用程序的执行。
IPC 路由使用此扫描器进行本地和 SSH 支持的文件夹选择,文件系统操作委托给所选主机。运行时扫描/导入路由请求 15 秒超时;IPC 转发选项,其超时默认为 null。现有时间检查发生在 await 操作之间,不会取消待处理的读取。
此修复释放已完成的工作。它不会限制活动前沿、目录条目数组、.gitignore 大小或目录广度。原始实现在扫描完成时释放其记录。不声称堆字节节省或现场事件归因;未使用受影响主机数据。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 orca48/orca