Pourquoi l'homme imprime-t-il «Donne-moi, donne-moi, donne-moi» à 00h30?

1625

Nous avons constaté que certains de nos tests automatiques échouaient lorsqu'ils se déroulaient à 00h30 mais fonctionnaient sans problème le reste de la journée. Ils échouent avec le message "gimme gimme gimme" dans stderr, ce qui n'était pas prévu. Pourquoi obtenons-nous cette sortie?

Jaroslav Kucera
la source
54
Je ne comprends pas. Pourquoi votre script de test appelle-t-il l'homme où il devrait échouer?
Josué
19
@ Josué Parce que nous voulions le "manpath" - "man -w". Voir la réponse.
Jaroslav Kucera
67
pour des raisons d'histoire, pourquoi avez-vous besoin de faire un «homme-w» toutes les minutes? qu'est-ce que vous testez vraiment?
Olivier Dulac
22
@OlivierDulac Cela ne se déclenche qu'une fois dans le test. Nous avons modifié l'ordre des tests et, tout à coup, cette erreur a été corrigée car elle s'est déclenchée à 00h30 ...
Jaroslav Kucera

Réponses:

2146

Cher @colmmacuait , Je pense que si vous tapez "homme" à 0001 heures, vous devez écrire "gimme gimme gimme". #abba @marnanel - 3 novembre 2011

euh, c’était de ma faute, je l’ai suggéré. Pardon.

Presque toute l'histoire est dans le commit. Le responsable de l'homme est un bon ami à moi. Il y a six ans, je lui ai dit en plaisantant que si vous appelez un homme après minuit, il doit écrire " Gimme gimme gimme ", à cause de la chanson d'Abba intitulée " Gimme gimme gimme gimme un homme après minuit ":

Eh bien, il a effectivement mettre en . Quelques personnes ont été amusées à le découvrir et nous l’avons oubliée jusqu’à aujourd’hui.

Je ne peux évidemment pas parler pour Col , mais je ne m'attendais pas à ce que cela pose jamais de problèmes: quel type de test briserait l'analyse de la sortie de man sans page spécifiée? J'imagine que je ne devrais pas être surpris que l'un d'eux soit finalement arrivé, mais cela a pris six ans.

(Le message commit m'appelle Thomas, qui est mon prénom légal bien que je ne l'utilise pas beaucoup en ligne.)

Ce problème a été résolu avec commit 84bde8 : Running man with man -wne déclenchera plus cet oeuf de Pâques.

Marnanel Thurman
la source
361
Oops! Cela n'a jamais été censé affecter les cas de non-erreur. Je n'en ai pas tenu compte lorsque j'ai implémenté git.savannah.gnu.org/cgit/man-db.git/commit/… . Correction dans le maître: git.savannah.gnu.org/cgit/man-db.git/commit/…
Colin Watson
3
Les commentaires ne sont pas pour une discussion prolongée; cette conversation a été déplacée pour discuter .
terdon
13
Les commentaires servent à demander des éclaircissements et / ou à discuter des points techniques d’une réponse. Si vous souhaitez discuter des avantages des œufs de Pâques, veuillez en discuter .
terdon
8
Maman mia, maintenant je sais vraiment!
Enrico Maria De Angelis
3
peut-être que l'homme a besoin d'un paramètre --sérieusement
Patrick Taylor
422

Ceci est un oeuf de Pâques dans man. Lorsque vous exécutez mansans spécifier la page ou avec -w, il envoie "gimme gimme gimme" à stderr, mais uniquement à 00h30:

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

Le code de sortie est toujours 0.

La sortie correcte doit toujours être:

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

La chaîne "gimme gimme gimme" se trouve dans RHEL, OpenSUSE, Fedora, Debian et probablement davantage, de sorte qu'elle n'est pas vraiment spécifique à la distribution. Vous pouvez vérifier grepvotre manbinaire.

Ce code est responsable de la sortie ajoutée par ce commit :

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");

J'ai contacté le support technique de RHEL à ce sujet.

La chaîne provient de la chanson bien connue de ABBA, Gimme! Donne-moi! Donne-moi! (Un homme après minuit) .


Le développeur de man-db, Colin Watson, a décidé qu'il y avait suffisamment de plaisir et que l'histoire ne serait pas oubliée et a supprimé complètement l'oeuf de Pâques .

Merci Colin!

Jaroslav Kucera
la source
148
Sur les plateformes faketimedisponibles, vous pouvez essayer ceci sans même avoir besoin de changer l'heure du système: faketime '00:30:00' man(Debian 8).
roaima
5
@rrauenza Il y a le billet buzilla: bugzilla.redhat.com/show_bug.cgi?id=1515352
Jaroslav Kucera
38
L’auteur a maintenant resserré l’oeuf de Pâques pour ne plus courir man, pas man -w: git.savannah.nongnu.org/cgit/man-db.git/commit/src/… et le commentaire de Colin sur la confession de Marnanel .
Martijn Pieters
21
Signalons que le commit initial a été déclenché à 00h01. Un commit ultérieur a changé cela à 00h30 avec le message du journal de commit "12 h 30" qui est à nouveau cité de la même chanson.
egmont
6
@ 0x90 man -wimprime le chemin de recherche actuel des pages de manuel, ce qui est le genre de chose que vous pouvez raisonnablement utiliser comme bloc de construction pour autre chose, par exemple si vous automatisiez l'installation ou le test de pages de manuel.
Colin Watson
363

Après réflexion, j'ai enlevé cet œuf de Pâques . Cela aura disparu dans la prochaine version man-db 2.8.0.

Je suis heureux que certaines personnes aient souri, ce qui, après tout, était le but recherché. Mes notifications sur Twitter, etc. aujourd'hui, suggèrent que la plupart des gens ont pensé que c'était plus amusant qu'ennuyeux. Pourtant, certaines personnes ont trouvé cela agaçant et six ans semblent être une très bonne course pour ce genre de chose; il ne sera probablement pas exposé à une bien meilleure exposition que celle prévue de manière inattendue par le biais de cette question. Il est temps de le coucher.

Colin Watson
la source
122
Je suis vraiment triste que tu aies décidé ça. À l’OMI, trop de gens l’a pris pour des œufs de Pâques.
Seth
36
Je n'exclurai pas d'ajouter quelque chose de différent à l'avenir, mais avec plus de soin! Cela devenait un peu fade, cependant, et l'humour a besoin de nouveauté.
Colin Watson
31
Je suis d'accord avec @Seth, il est triste de voir quelque chose disparaître qui a fait sourire la plupart d'entre nous, nous avons besoin de plus de cela dans ce monde.
Videonauth
190
J'espère que cela ne rompt pas les flux de travail xkcd.com/1172
Lakshay Garg
74
@ColinWatson Je pense que désactiver cette option dans un flux par défaut est une bonne idée, afin d'éviter toute interruption du flux de travail de quiconque. Mais en même temps, il est dommage qu'un tel chef-d'œuvre ait dû être supprimé. Vous pourriez ajouter un drapeau spécial, comme man -abbalorsque, une fois tiré après minuit, il donnerait un œuf de Pâques.
Commentaires