Наконец-то написан и открыт цитатник ALT Linux, пока что только с цитатами с IRC-канала (aka пакет fortunes-ALT-irc) и без голосования, зато с поиском и экспортом.

Самым сложным и интересным был импорт старых цитат. Хотелось хоть как-то близко к реальности выставить время добавления, тем более что некоторая информация об этом есть: для последних нескольких лет — дата коммита пачки из нескольких цитат в git (погрешность — пожалуй, в большинстве случаев меньше недели), для более ранних — дата сборки очередной версии пакета, видимая тоже как дата коммита, но с гораздо большей погрешностью (не берусь оценить навскидку, скорее всего не меньше полугода для самых ранних цитат каждого коммита). Задача осложена тем, что поверх уже закоммиченных цитат могли коммититься изменения форматирования и т.д., поэтому в лучшем случае blame для разных строк одной цитаты может показать разные даты, в худшем — одну неправильную. К счастью, у blame есть ключ -w, отключающий сравнение пробельных символов, а в случае разных дат можно брать самую раннюю. Дальше была проблема разбора данных blame из кода. Обёртка из GitPython то ли не работает вообще, то ли что, но нужного я от неё добиться не смог. Я несколько раз метался между использованием/исправлением/изменением этой обёртки и ручным разбором машинночитаемого вывода blame, но в итоге всё-таки вернулся к первоначальной идее парсинга обычного вывода blame в лоб регексами (да, это ужасно, и всё было бы вообще замечательно и даже без регексов, если бы не столбец с именем автора, содержащий неэскейпнутую произвольную строку с пробелами, отключаемый только вместе со столбцом даты). Получившиеся даты, конечно, неточны, но лучше вряд ли получится.

Добавить комментарий