为什么男人在00:30会打印“ gimme gimme gimme”?


1625

我们注意到,某些自动测试在00:30运行时会失败,但在一天的其余时间中仍然可以正常工作。他们失败,并在stderr中显示消息“ gimme gimme gimme”,这是意料之外的。为什么我们得到这个输出?



54
我不明白 为什么您的测试脚本会在失败的地方打电话给男人?
约书亚记

19
@Joshua因为我们想要“ manpath”-'man -w'。查看答案。
Jaroslav Kucera

67
为了历史,为什么您需要每分钟执行一次“ man -w”操作?您到底在测试什么?
奥利维尔·杜拉克

22
@OlivierDulac它仅在测试中被触发一次。我们重新安排了测试顺序,并于00:30触发了此错误,该错误突然消失了……
Jaroslav Kucera,

Answers:


2146

亲爱的@colmmacuait,我认为,如果您在0001小时键入“ man”,则应打印“ gimme gimme gimme”。#abba @marnanel- 2011年11月3日

嗯,那是我的错,我建议了。抱歉。

整个故事几乎都在提交中。人的维护者是我的好朋友,六年前的一天,我开玩笑地对他说,如果您在午夜之后调用人,则应打印“ gimme gimme gimme ”,因为阿爸的一首歌叫“ Gimme gimme gimme a man”。午夜之后

好吧,他确实把它放进去 。一些人发现它很有趣,而直到今天我们大多数都忘记了它。

显然不能代表Col,但是我没想到这会引起任何问题:在不指定页面的情况下解析man的输出会中断哪种测试?我想我不应该惊讶一个人最终出现了,但是确实花了六年时间。

提交消息称我为Thomas,虽然我不太在线使用它,但这是我的法定名字。)

提交84bde8已解决此问题:正在运行的人man -w将不再触发此复活节彩蛋。


361
糟糕!它从未打算影响非错误案件。当我实现git.savannah.gnu.org/cgit/man-db.git/commit/…时,我没有考虑到这一点。已在主服务器中
科林·沃森

3
评论不作进一步讨论;此对话已转移至聊天
terdon

13
这些评论用于要求澄清和/或讨论答案的技术要点。如果您想讨论复活节彩蛋的优点,请聊天
terdon

8
妈妈咪呀,现在我真的知道了!
恩里科·玛丽亚·德·安吉利斯

3
也许人需要一个非常重要的参数
帕特里克·泰勒·泰勒

423

这是一个复活节彩蛋man。当您运行时man未指定页面或使用时-w,它将向stderr输出“ gimme gimme gimme”,但仅在00:30:

# date +%T -s "00:30:00"
00:30:00
# man -w
gimme gimme gimme
/usr/local/share/man:/usr/share/man:/usr/man

退出代码始终为0。

正确的输出应始终为:

# man -w
/usr/local/share/man:/usr/share/man:/usr/man
# echo $?
0
# man
What manual page do you want?
# echo $?
1

字符串“ gimme gimme gimme”可以在RHEL,OpenSUSE,Fedora,Debian等中找到,因此可能不是发行版专用的。您可以对grep您的man二进制文件进行验证。

此代码负责此提交添加的输出

src/man.c-1167- if (first_arg == argc) {
src/man.c-1168-   /* 
http://twitter.com/#!/marnanel/status/132280557190119424 */
src/man.c-1169-   time_t now = time (NULL);
src/man.c-1170-   struct tm *localnow = localtime (&now);
src/man.c-1171-   if (localnow &&
src/man.c-1172-       localnow->tm_hour == 0 && localnow->tm_min == 30)
src/man.c:1173:     fprintf (stderr, "gimme gimme gimme\n");

我已就此问题联系RHEL支持。

该字符串来自著名的ABBA歌曲Gimme!给我 给我 (午夜后的男人)


人事数据库的开发人员,科林·沃森(Colin Watson)认为,玩得很开心,而且这个故事不会被遗忘,并完全删除了复活节彩蛋

谢谢科林!


147
faketime可用的平台上,您可以尝试此操作,甚至无需更改系统时间:faketime '00:30:00' man(Debian 8)。
roaima

5
@rrauenza有buzilla门票:bugzilla.redhat.com/show_bug.cgi?
Jaroslav Kucera

38
作者现在已经收紧了复活节彩蛋,只允许继续使用man,而不是man -wgit.savannah.nongnu.org/cgit/man-db.git/commit/src/…以及Colin对Marnanel的confessio ^ Wanswer的评论
马丁·彼得斯

21
让我们说一下,最初的提交是在12:01 am触发的。后续提交将其更改为12:30 am,并带有提交日志消息“十二点半”,该消息再次引用同一首歌。
egmont

6
@ 0x90 man -w打印当前的手册页搜索路径,您可以合理地将其用作其他内容的构建块,例如,如果要自动化的事物涉及安装或测试手册页。
科林·沃森

364

经过一番思考,我把这个复活节彩蛋移除了。在即将发布的man-db 2.8.0中将消失。

我很高兴它使某些人微笑,这毕竟是它的全部目的,而今天我的Twitter通知等表明,大多数人认为它比有趣更有趣。不过,有些人还是觉得这很烦人,而六年似乎是个不错的成绩。它可能不会比通过这个问题已经意外地获得更好的曝光率。是时候睡觉了。


121
我真的很难过你决定。国际海事组织(IMO)太多人把它当作复活节彩蛋。
赛斯

36
我不排除将来会增加一些不同之处,尽管会更加小心!不过,它变得有些陈旧,幽默的确需要新颖性。
科林·沃森

31
我有@Seth同意,这是可悲的看到一些走这使得我们大多数人的微笑,我们需要更多的实际在这个世界上。
Videonauth

189
我希望这不会破坏任何工作流程xkcd.com/1172
Lakshay Garg,

73
@ColinWatson我认为在默认流程中禁用此功能是一个好主意,因此不会破坏任何人的工作流程。但是与此同时,这样的杰作必须被删除实在令人遗憾。您可以添加一个特殊的标志,例如man -abba,午夜后解雇时会送出复活节彩蛋。
Bartlomiej Skwira
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.