Skip to content

v0.10.2

Choose a tag to compare

@github-actions github-actions released this 07 Oct 03:51
· 70 commits to master since this release
57c01ed

升级须知

  • tools 系列与 plugins config set 也检查 DSH 版本:tools 遇到未测试的 DSH 版本以退出码 4 结束(可加 --allow-untested-dsh),找不到 DSH 时退出码 4(此前 3)。
  • 选中的 overlay 无法与 base 合并时,doctor 以退出码 3 结束(0.10.1 只警告)。
  • 插件补丁 id 对不上 DSH 加载它的那一行时,下一次 plugins config set 会把补丁改到正确的 id,清单随之变化。
  • 0.10.1 的「别名不能以 @ 开头」放宽为只拒绝 @profile 和 @mount:…;按 0.10.1 须知改过名的别名无需改回。

修复

  • 插件别名只拒绝 dshenv 自己的块名 @profile 和以 @mount: 开头的名字,lock.json 不再套用这条限制。0.10.1 拒绝所有以 @ 开头的别名,清单里已有 @x 这类别名时 remove、install --as、plan 全部以退出码 3 失败,升级须知里的办法也执行不了;手工改好清单后 lock.json 里的旧别名还会让 plan 报错。
  • 撤销一次清掉了 overlay 选择的 rollback(dshenv rollback --yes 恢复它留下的快照)时,重新选中那个 overlay;此前 overlay 文件回来了但选择丢了,之后的 plan/apply 只用 base,会卸载 overlay 声明的插件。期间已另选了 overlay 时保持不变。
  • 被结束的 DSH 没有被回收、成了僵尸进程时(如 dshenv 在容器里以 PID 1 运行且没加 --init),中断 apply 后照样释放它留下的 package.json.lock;dshenv.lock 的持有者是僵尸进程时同样接管。此前锁一直留着,之后的命令要等到超时。
  • dshenv.lock 里的 pid 正好是当前进程(容器重启后 pid 相同)时按陈旧锁接管;拿不到锁时报错写出持有者的 pid、主机名和加锁时间,并说明 pid 被复用或主机名变了时可删除锁文件。此前一直报 Environment lock is already held,没有处理办法。
  • 再次 adopt 由 dshenv 安装的 git 插件时,保留 base 声明的 ref/commit 和 URL 写法;此前 DSH 里记的 URL 带 git+ 前缀,与清单对不上,ref/commit 被丢掉、URL 被改写。
  • source clone --profile 用另一种写法(结尾的 /、.git 有无)指向清单里的同一个仓库时,仍克隆并锁定清单固定的 commit,清单与 lock 沿用清单的 URL 写法;此前会悄悄删掉固定的 commit,lock 锁到最新提交。
  • Windows 上 DSH_CLI 指向 PATH 里没有的命令时也以退出码 4 结束(此前为 5):命令名先按 PATH 与 PATHEXT 查找。
  • plugins config set 发现插件已有的补丁 id 对不上 DSH 加载它的那一行时(apply 前写的、或 0.9.x 留下的),把补丁移到正确的 id 上并说明;在 overlay 里写而补丁属于 base 时以退出码 3 提示先用 --layer base。此前补丁永远不生效,plan 却显示已同步。
  • tools config set 写 base 时,base 已有这一条但没有自己的 config(如只做过 disable),同样不抄 overlay 补丁里的值或本机路径(退出码 3)。
  • doctor 选中的 overlay 无法与 base 合并时以退出码 3 报错(0.10.1 起被当作 base 无效、只警告);lock.json 无效时在 stderr 警告。
  • tools 系列与 plugins config set 读取 DSH 组合配置前检查 DSH 版本:tools 遇到不支持的版本或找不到 DSH 时以退出码 4 结束(此前照用旧 DSH 的结果写清单,找不到时退出码 3),config set 不抄组合配置并说明原因。
  • envctl/skills 是软链接时,rollback 到没有 skills 的快照只删除链接本身;此前会把链接指向的外部目录(如 dotfiles 里的 skills,连同其中非 skill 的文件)整个删掉,且不进 trash。链接悬空时内容写回原目标并保留链接。
  • 旧写法 tools config <tool> <路径> <值> 带 --help、--version(或写成 help tools config …)时只显示帮助或版本;此前会真的写入清单并固定整个预设。
  • 团队配置里写成 link:…、file:/…、workspace:… 的 Git 地址按本机路径拒绝;此前被当成网络地址放行,pnpm 会把它当本地目录链接安装。