Por que o homem imprime "gimme gimme gimme" às ​​00:30?

1624

Percebemos que alguns de nossos testes automáticos falham quando são executados às 00:30, mas funcionam bem o resto do dia. Eles falham com a mensagem "gimme gimme gimme" no stderr, o que não era esperado. Por que estamos obtendo essa saída?

Jaroslav Kucera
fonte
5
Linkando em: unix.stackexchange.com/questions/226716/…
Jeff Schaller
54
Eu não entendo. Por que seu script de teste chama o homem de onde deveria falhar?
Joshua
19
@ Josué Porque queríamos o "caminho do homem" - 'man -w'. Veja a resposta.
precisa
67
por uma questão de história, por que você precisa fazer um 'homem-w' a cada minuto? o que você está realmente testando?
precisa
22
@OlivierDulac Está sendo acionado apenas uma vez no teste. Nós rearanged a ordem de testes e de repente esse erro apeared como foi desencadeada às 00:30 ...
Jaroslav Kucera

Respostas:

2145

Caro @colmmacuait , acho que se você digitar "man" às 0001 horas, deverá imprimir "gimme gimme gimme". #abba @marnanel - 3 de novembro de 2011

er, isso foi culpa minha, eu sugeri. Desculpa.

Praticamente toda a história está no commit. O mantenedor do homem é um bom amigo meu, e um dia, seis anos atrás, eu disse a ele brincando que se você invocar o homem depois da meia-noite, ele deve imprimir " me dê, me dê, me dê ", por causa da música do Abba chamada " Me dê, me dê um homem depois da meia-noite ":

Bem, ele chegou a colocá-lo em . Algumas pessoas se divertiram ao descobri-lo, e quase o esquecemos até hoje.

Não posso falar por Col , obviamente, mas não esperava que isso causasse problemas: que tipo de teste seria interrompido ao analisar a saída de man sem nenhuma página especificada? Suponho que não deveria me surpreender com o fato de alguém aparecer, mas levou seis anos.

(A mensagem de confirmação me chama Thomas, que é meu primeiro nome legal, embora eu não a use muito online.)

Esse problema foi corrigido com o commit 84bde8 : executar o man with man -wnão acionará mais esse ovo de páscoa.

Marnanel Thurman
fonte
361
Opa! Nunca foi criado para afetar casos sem erro. Não levei isso em consideração quando implementei git.savannah.gnu.org/cgit/man-db.git/commit/… . Corrigido no mestre: git.savannah.gnu.org/cgit/man-db.git/commit/…
Colin Watson
3
Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
terdon
13
Os comentários são para pedir esclarecimentos e / ou discutir os pontos técnicos de uma resposta. Se você quiser discutir o mérito dos ovos de Páscoa, leve-o para conversar .
terdon
8
Mamma mia, agora eu realmente sei!
Enrico Maria De Angelis
3
talvez o homem precisa de um parâmetro --seriously
Patrick Taylor
422

Este é um ovo de páscoa man. Quando você executa mansem especificar a página ou com -w, ele gera "gimme gimme gimme" para stderr, mas apenas às 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

O código de saída é sempre 0.

A saída correta deve sempre ser:

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

A string "gimme gimme gimme" pode ser encontrada no RHEL, OpenSUSE, Fedora, Debian e provavelmente mais, por isso não é realmente específico da distribuição. Você pode verificar o grepseu manbinário.

Este código é responsável pela saída , adicionada por este 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");

Entrei em contato com o suporte do RHEL sobre esse problema.

A string vem da conhecida canção do ABBA, Gimme! Gimme! Gimme! (Um homem depois da meia-noite) .


O desenvolvedor do man-db, Colin Watson, decidiu que havia diversão suficiente e a história não será esquecida e removeu completamente o ovo da páscoa .

Obrigado Colin!

Jaroslav Kucera
fonte
147
Nas plataformas faketimedisponíveis, você pode tentar isso sem precisar alterar a hora do sistema: faketime '00:30:00' man(Debian 8).
roaima
5
@rrauenza Não é o bilhete buzilla: bugzilla.redhat.com/show_bug.cgi?id=1515352
Jaroslav Kucera
38
O autor agora apertou o ovo da páscoa para continuar man, não man -w: git.savannah.nongnu.org/cgit/man-db.git/commit/src/… e o comentário de Colin no confessio ^ Wanswer de Marnanel .
Martijn Pieters
21
Vamos mencionar que o commit inicial foi acionado às 12h01. Um commit de acompanhamento mudou isso para 12:30 com a mensagem de log de commit "doze e meia", que é novamente citada da mesma música.
egmont
6
@ 0x90 man -wimprime o caminho de pesquisa da página manual atual, que é o tipo de coisa que você pode razoavelmente usar como um componente básico para outra coisa, por exemplo, se a coisa que você automatizou envolvia a instalação ou teste de páginas de manual.
Colin Watson
363

Após algumas reflexões, retirei este ovo de Páscoa . Ele será lançado no próximo man-db 2.8.0.

Fico feliz que isso tenha feito algumas pessoas sorrirem, o que afinal era o objetivo disso, e minhas notificações no Twitter e assim por diante hoje sugerem que a maioria das pessoas achou mais divertido do que irritante. Ainda assim, algumas pessoas acharam isso irritante, e seis anos parecem uma boa corrida para esse tipo de coisa; provavelmente não terá uma exposição significativamente melhor do que já inesperadamente tem por meio dessa pergunta. Hora de colocá-lo na cama.

Colin Watson
fonte
121
Estou muito triste por você ter decidido isso. Na OMI, muitas pessoas têm ovos de páscoa.
Seth
36
Não descartarei adicionar algo diferente no futuro, embora com mais cuidado! No entanto, estava ficando um pouco obsoleto, e o humor exige novidade.
Colin Watson
31
Eu tenho que concordar com @Seth, é triste ver algo acontecer que fez a maioria de nós sorrir, precisamos de mais do que realmente neste mundo.
Videonauth 22/11
189
Espero que isso não quebra qualquer workflows xkcd.com/1172
Lakshay Garg
73
@ColinWatson Eu acho que desabilitar isso em um fluxo padrão é uma boa idéia, para não interromper o fluxo de trabalho de ninguém. Mas, ao mesmo tempo, é uma pena que uma obra-prima tenha sido removida. Você pode adicionar uma bandeira especial como man -abbae quando disparada depois da meia-noite daria o ovo da páscoa.
Bartlomiej Skwira