Por que Git tem hora do chá?

102

No arquivo date.c do código-fonte do Git, observo a seguinte estrutura de nomes de horários especiais:

static const struct special {
    const char *name;
    void (*fn)(struct tm *, struct tm *, int *);
} special[] = {
    { "yesterday", date_yesterday },
    { "noon", date_noon },
    { "midnight", date_midnight },
    { "tea", date_tea },
    { "PM", date_pm },
    { "AM", date_am },
    { "never", date_never },
    { "now", date_now },
    { NULL }
};

Eu entendo a utilidade (um pouco) da maioria desses, mas por que ter um "chá" (avalia para 17:00 horas)? Isso é apenas uma espécie de ovo de Páscoa ?

Jonah Bishop
fonte

Respostas:

65

Este commit pode lhe dar uma pista do motivo pelo qual foi incluído: https://github.com/git/git/commit/a8aca418d6484400d6804e22717bd49ca06c28e9

Acho que foi sugerido inicialmente como uma piada, mas na verdade foi implementado para demonstrar a capacidade dos usuários de incluir seus próprios períodos de hora / data personalizados:

On Fri, 18 Nov 2005, David Roundy wrote:
> Don't forget "high noon"!  (and perhaps "tea time"?)  :)


Done.

    [torvalds@g5 git]$ ./test-date "now" "midnight" "high noon" "tea-time"
    now -> bad -> Wed Dec 31 16:00:00 1969
    now -> Fri Nov 18 08:50:54 2005

    midnight -> bad -> Wed Dec 31 16:00:00 1969
    midnight -> Fri Nov 18 00:00:00 2005

    high noon -> bad -> Wed Dec 31 16:00:00 1969
    high noon -> Thu Nov 17 12:00:00 2005

    tea-time -> bad -> Wed Dec 31 16:00:00 1969
    tea-time -> Thu Nov 17 17:00:00 2005

Thanks for pointing out tea-time.

This is also written to easily extended to allow people to add their own
important dates like Christmas and their own birthdays.

Signed-off-by: Linus Torvalds <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
Axel
fonte
2
Portanto, para adicionar uma nova data personalizada, seria necessário recompilar o Git com suas alterações específicas? Ou existe alguma etapa de pós-compilação onde se pode especificá-los?
Jonah Bishop
1
Não estou familiarizado o suficiente com o approxidate e como ele funciona para ser capaz de responder. Julgando pela falta de documentação sobre ele, eu provavelmente diria que sim - você precisaria recompilar o git para suportá-lo.
Axel
38
@JonahBishop, você não sabia? Você pode ter recursos personalizados se modificar a fonte e recompilá-la ....
Paul Draper
1
@jhpratt Não vejo nenhum problema aqui. Ninguém prometeu que seria fácil usar as personalizações que você adicionou com tanta facilidade.
Atomosk de
1
@jhpratt Build systems são divertidos assim, ou se acostumar com isso ou resolver o problema e contribuir com o projeto de código aberto gratuito.
Sergio Basurco