LE Blog

Инженер с поэтической душой

09.07.2018 firtree_right Счастливый коммит 2.0

В далёком 2010 году писал скрипт для того, чтобы определить, счастливый ли последний сделанный коммит. Это когда у хэша коммита, как и у номера билетика, сумма цифр первой половины равна сумме цифр второй. Долгое время он у меня работал. Событие не только случайное, но и редкое — от этого ещё более приятное. Потом Илья сделал нам телеграм-бота, который постил все сделанные коммиты в проектах «нек4» в телеграм-чат. В том числе и поздравлял со счастливыми.

В текущей команде сначала пришлось, конечно, объяснить смешное понятие счастливого билетика. Если пересказывать кому-то из другой культуры, становится очевидно, насколько в нашей культуре сильны суеверия. Фактически, человек доверяет себя совпавшим цифрам. Полученная исполнением ритуала удача должна не только отвести контролёра от маршрута, но и помочь где-то дальше.

lucky!

Для популяризации этой нелепой традиции я переписал скрипт на баше. Руби всё-таки неспешный. Можно почувствовать, как он спотыкается об эту проверку, особенно если ты стремительный инженер. Это не самое элегантное решение, но отдельную гордость вызывает то, что проверка работает на Маке и Убунте из коробки. Самые болезненные при переносе скриптов обычно как раз sed’ы и grep’ы. Скрипт нужно положить в .git/hooks/post-commit и сделать запускаемым.

#!/bin/bash

SHA=$(git log -1 --format=format:"%H" | tr /a-f/ /A-F/)
EQL=$(echo ${SHA:0:20}==${SHA:20:20} | sed 's/\([0-9A-F]\)/\1+/g' | sed 's/+$//' | sed 's/+=/=/' | awk '{print "obase=16; " $0}' | bc)

if [ "$EQL" == "1" ]; then
  echo
  echo '  ******************************'
  echo '  *     Yay! Lucky commit!     *'
  echo '  ******************************'
  echo
fi

Но что делать дальше, после того, как его закоммитил, я пока не придумал. Как его съесть..? :-Е