fix: 清掉改造过程留下的陈旧引用(代码改了、文档还写着旧的)

这一轮做的是交付一致性检查:把这一路改掉/移走/删掉的每个符号在全仓(含文档)扫一遍。42 处命中里 38 处是正当的 —— CHANGELOG 与 ADR 里讲“原来是什么”属于历史叙述,test 里的 Assert-FileExists 是因为我只抑制了误判而没有改名。剩下的 4 处是真陈旧:

  * README 还在配置表里写着 CatalogMaxDepth,而那个配置项上一轮已经整条移除;

  * Get-BakNRetItemArchiveName 的 param 里还留着一个内联的 [int]$MaxDepth = 5(上一轮的删除按行匹配,没覆盖到这种写在同一行的参数),它已经没有任何调用方传值;

  * tools\lab\README.md 与 docs\agents\domain.md 还写着模块叫 Common.psm1。

这正是这次改造从头到尾在抓的毛病:文档承诺的东西,代码已经不做了。区别是多了一个可执行的检查 —— 符号改名/删除之后,全仓扫一遍旧名字。

验收:test.ps1 9/9 全绿(7 与 5.1)、真实清单只读冒烟 4/4。
This commit is contained in:
Shuery committed 2026-09-27 10:49:21 +08:00
1 parent c4452a749c
commit 120cf3584b
4 files changed
+6 -7

No files matched your search

@@ -10,7 +10,7 @@
* 条目本来就写的是字面路径(含分隔符或 %变量%)时也用路径命名算法, * 条目本来就写的是字面路径(含分隔符或 %变量%)时也用路径命名算法,
这样现有清单不需要改写就能继续工作。 这样现有清单不需要改写就能继续工作。
#> #>
param($Entry, [string]$CatalogPath, [int]$MaxDepth = 5) param($Entry, [string]$CatalogPath)
# @pathname 时用"真实路径"跑路径命名算法。 # @pathname 时用"真实路径"跑路径命名算法。
# 清单里写的可能是软件名,必须先经名录换成真实路径, # 清单里写的可能是软件名,必须先经名录换成真实路径,
+1 -2
View File
@@ -1,4 +1,4 @@
# BakNRet # BakNRet
把 `BackupList.txt` 里列出的软件 / 目录用 **7-Zip** 打包进 `Backups/`,并且能用 `Restore.ps1` 原样恢复的 Windows 备份工具。 把 `BackupList.txt` 里列出的软件 / 目录用 **7-Zip** 打包进 `Backups/`,并且能用 `Restore.ps1` 原样恢复的 Windows 备份工具。
@@ -163,7 +163,6 @@
LogDir = 'logs' LogDir = 'logs'
SnapshotDir = 'Backups\snapshots' SnapshotDir = 'Backups\snapshots'
SoftwareCatalog = 'SoftwareCatalog.psd1' SoftwareCatalog = 'SoftwareCatalog.psd1'
CatalogMaxDepth = 5 # 前缀补全时最多向下找几层
MinFreeSpaceGB = 5 MinFreeSpaceGB = 5
VerifyArchive = $true # 归档后跑 7z t VerifyArchive = $true # 归档后跑 7z t
ComputeHash = $false # 是否额外算 SHA256(大归档很慢) ComputeHash = $false # 是否额外算 SHA256(大归档很慢)
+2 -2
View File
@@ -1,4 +1,4 @@
# 领域文档 # 领域文档
探索代码之前,工程技能应当怎么消费本仓库的领域文档。 探索代码之前,工程技能应当怎么消费本仓库的领域文档。
@@ -21,7 +21,7 @@
├── CONTEXT.md ← 术语表 / 领域模型(尚不存在,懒创建) ├── CONTEXT.md ← 术语表 / 领域模型(尚不存在,懒创建)
├── docs/adr/ ← 决策记录(尚不存在,懒创建) ├── docs/adr/ ← 决策记录(尚不存在,懒创建)
│ └── 0001-....md │ └── 0001-....md
├── Common.psm1 ← 公共模块:日志、清单解析、名录、归档布局、安全描述符 ├── BakNRet\BakNRet.psd1 ← 公共模块:日志、清单解析、名录、归档布局、安全描述符
├── Backup.ps1 ← 备份入口 ├── Backup.ps1 ← 备份入口
├── Restore.ps1 ← 恢复入口 ├── Restore.ps1 ← 恢复入口
├── BackupList.txt ← 唯一「要处理什么」的来源 ├── BackupList.txt ← 唯一「要处理什么」的来源
+2 -2
View File
@@ -132,7 +132,7 @@ gsudo pwsh -NoProfile -File .\tools\lab\Lab.ps1 reset # 秒回 clean-baseli
9. VM 是**未激活**的 Windows:会有水印,个性化受限,功能测试不受影响。 9. VM 是**未激活**的 Windows:会有水印,个性化受限,功能测试不受影响。
10. **PowerShell Direct 的默认端点是 Windows PowerShell 5.1**(不是 7)。要在 VM 里跑 7 的代码 10. **PowerShell Direct 的默认端点是 Windows PowerShell 5.1**(不是 7)。要在 VM 里跑 7 的代码
必须显式 `Start-Process pwsh.exe`(`Lab.ps1` 就是这么做的)。5.1 还读不了仓库里无 BOM 的 必须显式 `Start-Process pwsh.exe`(`Lab.ps1` 就是这么做的)。5.1 还读不了仓库里无 BOM 的
UTF-8 脚本(见下「已知问题」),`Import-Module C:\BakNRet\Common.psm1` 会报一串「缺少右 }」。 UTF-8 脚本(见下「已知问题」),`Import-Module C:\BakNRet\BakNRet\BakNRet.psd1` 会报一串「缺少右 }」。
## 已知问题与规避 ## 已知问题与规避
@@ -180,7 +180,7 @@ Get-Content -LiteralPath out.txt -Encoding UTF8
如果希望产品层面自动发现,可以在「源未更新」的判断里带上「本次解析出的 roots/layouts 是否与 如果希望产品层面自动发现,可以在「源未更新」的判断里带上「本次解析出的 roots/layouts 是否与
manifest 记录的一致」,不一致就不要跳过。### 仓库里的 PowerShell 文件是「UTF-8 无 BOM」 manifest 记录的一致」,不一致就不要跳过。### 仓库里的 PowerShell 文件是「UTF-8 无 BOM」
`Backup.ps1` / `Common.psm1` 等都没有 BOM(开头字节是 `3C 23 0A` = `<#` + 换行)。 `Backup.ps1` / `BakNRet\BakNRet.psd1` 等都没有 BOM(开头字节是 `3C 23 0A` = `<#` + 换行)。
PowerShell 7 默认按 UTF-8 读,没问题;**Windows PowerShell 5.1 会把无 BOM 文件按 ANSI(GBK) 读**, PowerShell 7 默认按 UTF-8 读,没问题;**Windows PowerShell 5.1 会把无 BOM 文件按 ANSI(GBK) 读**,
中文注释会被拆出错字节,甚至报「语句块或类型定义中缺少右 }」这类假解析错误。 中文注释会被拆出错字节,甚至报「语句块或类型定义中缺少右 }」这类假解析错误。
要么给这些文件加 BOM,要么在文档里明确只支持 PowerShell 7。 要么给这些文件加 BOM,要么在文档里明确只支持 PowerShell 7。