今日重点:💬 地道表达——v7.4 合并窗里,Linus 发现 media 树有 11 个提交的 提交日期比自己的父提交还早,直接在 GIT PULL 线程里撂话:I'm not pulling the media tree until this is dealt with(这事不解决,media 树我不拉)。一天之内三封邮件: 两封措辞强硬的最后通牒,一封 Sasha 顺藤摸瓜的技术追查——强硬怎么强得有分寸、 委婉怎么委婉得清楚,全是现成的教材。
📖 原文现场(真实邮件,逐字引用)
/ section Btw, there's something else *seriously* wrong with the whole media tree in a more fundamental way.
The commit dates on those things are pure garbage, and all over the map.
出处:Linus Torvalds,[GIT PULL for v7.4] media updates 线程,linux-media, 〔10-31 15:48 北京〕。背景:合并窗期间 Linus 发现 media 树有 11 个提交的 committer date 早于其父提交(最离谱的差三天),而 git describe 的计数启发式依赖提交日期——时间戳一乱, describe 的计数就失真,他说这「actually broke git this merge window」(〔11-01 05:14 北京〕 第二封原文, 他已向 git 邮件列表发补丁修 describe 计数)。Sasha Levin 随后追查(〔11-01 10:25 北京〕): describe 多算的 283 个提交其实全部来自 bpf-next-7.3 而非 media;media 侧的日期异常则是 GitLab 合并机器人 Marge-bot 变基时用了 --keep-committers,把原始 committer date 原样复制到了 变基后的提交上。 原文
💬 逐句拆:六处地道说法
/ column playing games with X Unless somebody is playing games with rewriting commit dates... / And if people are playing games with commit dates, they need to stop doing that. NOW. ——play games with 不是「玩游戏」,是「在……上耍花样、动手脚」,带指责但不带脏字, 正是邮件列表能接受的火力上限。NOW. 单独成句=立刻、没有商量余地——大写加句号, 比 any more 之类的从句狠得多。
all over the map The commit dates on those things are pure garbage, and all over the map. ——字面「铺得满地图都是」,引申为乱七八糟、毫无一致性:有的早三天、有的晚三小时, 对不上任何模式。口语和邮件都高频,比 chaotic / inconsistent 都生动。前半句 pure garbage 定调,后半句给出乱象的具体形态——骂人的标准节奏:先定性,再画像。
off by three days / dates completely off ...dates that are several *days* off... the worst is off by three days. / a broken machine with dates completely off(第二封,〔11-01 05:14 北京〕)。 ——off 作表语=有偏差、不对头;off by N=偏了 N 这么多。my clock is off、 the numbers are off、you're not far off——报时、对账、核数据场景全都能用。 一句 the worst is off by three days,把「11 个里最夸张的差三天」说得又短又清楚。
not ... until this is dealt with I'm not pulling the media tree until this is dealt with. ——维护者版最后通牒的标准句式:not ... until ... 把「拒绝」和「解锁条件」装进一句话, 对方既知道被卡了,也知道怎么解卡。dealt with 用被动式,不点名谁去处理——责任留给 对方自己领。对比 stop doing that 的直接,这句是「给条件的强硬」,更适合留有余地的场合。
this is more than X Note that this is more than "don't lie" (although that's the biggest issue to me personally). ——第二封开场(〔11-01 05:14 北京〕)。把问题升格的句式:这不只是 「别撒谎」的问题(虽然撒谎是我个人最在意的)——它还真把 git 弄坏了。more than 一抬, 讨论从态度问题升级到工程问题;括号里的 personally 顺带交代个人立场,主次分明。
Funny enough / the tooling being funny Sasha 的两处 funny(〔11-01 10:25 北京〕):Funny enough, they all come from bpf-next-7.3 rather than media——句首的 funny enough=说来也巧,引出反转; 结尾 So in both cases it's the tooling being funny——be being funny 拟人化, =(工具)在抽风、出怪癖。措辞的妙处:既然 funny 的是工具,就不是人在撒谎—— 一个词把 Linus 怀疑的「人动手脚」降级成了「工具的毛病」,给双方都留了台阶。同一句里 A bpf series went in with five commits in the same second 的 went in=合入, 口语里描述补丁进树就用它。
✨ 辅助彩蛋:术语卡
/ column ★ committer date(提交者日期)
定义取自 Sasha Levin 今天的追查邮件(〔11-01 10:25 北京〕)
原文描述 The media CI merges MRs with Marge-bot, a GitLab merge bot, which rebases each one onto next using --keep-committers. That copies the original committer date onto every rebased commit, so an MR landing after a newer one ends up older than its new parent.
中文解释 git 每个提交有两个时间:author date(作者最初写下的时刻)和 committer date(这个提交对象 最后一次被创建/改写的时刻)。变基(rebase)会生成新的提交对象,默认 committer date 随之刷新;Marge-bot 加 --keep-committers 故意保留原始 committer date——于是后合入的 MR 反而顶着更旧的日期,排在它比它「老」的父提交后面,日期就倒挂了。
记忆钩子 author date 记「这孩子哪天生的」,committer date 记「这条记录哪天落进这本账」——变基相当于 誊抄到账本新位置,--keep-committers 是誊抄时故意写回原来的落账日期。账本讲究先后有序, 日期倒挂,git describe 这种靠日期抄近道的启发式就会算错。
和你相关 和你相关:在 CI 自动变基的团队里推补丁时,如果有人说你的提交日期「不可能」,先查变基机器人是不是带了 --keep-committers 之类的选项——工具链的锅,别急着背。
🔗 原文
✍️ 今日练习
/ column ✍️ 场景写作(英文,两三句):你维护一个子系统,发现某个贡献者的 PR 里提交日期全部倒挂,CI 变基机器人嫌疑最大,但真相没查清前你不想指控任何人。请写一段回复:① 用 not ... until ... 给出阻塞条件(修复日期前不合并);② 用 off by 描述你观察到的偏差;③ 学 Sasha 用 being funny 把怀疑对象从「人」挪到「工具」,给双方留台阶。
💡 显示答案
参考(仿写示范,非原文):I'm not merging this until the commit dates are fixed — several of them are off by hours, with children older than their parents. That said, I suspect it's the tooling being funny rather than anyone playing games with the dates, so let's check what the CI rebase bot does to committer dates first.
📖 原文:And if people are playing games with commit dates, they need to stop doing that. NOW. Because I'm not pulling the media tree until this is dealt with.
📎 原文引用 每日一句:Time doesn't go backwards.(时间不会倒流。)
素材:lore.kernel.org linux-media([GIT PULL for v7.4] media updates 线程)· 北京时间