Почему у Git есть время чая?

102

В файле date.c в исходном коде Git я отмечаю следующую структуру специальных имен времени:

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 }
};

Я понимаю (в некоторой степени) полезность большинства из них, но зачем мне «чайное» время (оно оценивается как 17:00 часов)? Это что-то вроде пасхального яйца ?

Иона Бишоп
источник

Ответы:

65

Этот коммит может дать вам представление о том, почему он был включен: https://github.com/git/git/commit/a8aca418d6484400d6804e22717bd49ca06c28e9

Я думаю, что изначально это было предложено как шутка, но на самом деле реализовано, чтобы продемонстрировать возможность пользователям включать свои собственные периоды времени / даты:

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 <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Аксель
источник
2
Итак, чтобы добавить новую настраиваемую дату, нужно ли перекомпилировать Git с их конкретными изменениями? Или есть какой-то этап после компиляции, где можно их указать?
Jonah Bishop
1
Я недостаточно знаком с приближение и то, как он работает, чтобы иметь возможность ответить. Судя по отсутствию документации по нему, я бы, наверное, сказал да - вам нужно будет перекомпилировать git для его поддержки.
Axel
38
@JonahBishop, разве вы не знали? У вас могут быть специальные функции, если вы измените исходный код и перекомпилируете его ....
Пол Дрейпер,
1
@jhpratt Я не вижу здесь проблем. Никто не обещал, что будет легко использовать настройки, которые вы так легко добавили.
Atomosk
1
Системы сборки @jhpratt - это весело: либо привыкай, либо решай проблему и вноси свой вклад в бесплатный проект с открытым исходным кодом.
Sergio Basurco