Как вывести текущий хэш коммита git-репозитория в приложении или на веб-сайте

Бывают ситуации, когда запиливаешь новый функционал или правишь старый, тестируешь — всё ок. А выкатываешь на продакшен — ничего не работает и вообще ощущение, будто изменения не накатились. Как быть уверенным, что на продакшене крутится именно тот код, который был на него залит? Одним из решений данной проблемы может стать отображение версии текущего билда. Естественно, номерация версий должна быть не ручной, а автоматической. Если вы используете git для ведения репозитория своего проекта, то в качестве номера версии можно использовать хэш-текущего комита + время комита.

Получить хэш текущего активного комита можно с помощью команды:

git rev-parse HEAD

А время комита можно получить так:

git show -s --format=%ci HEAD

Формат можно менять, чтобы получить timestamp, нужно указать —format=%ct.

Естественно, все эти команды не нужно дёргать в реалтайме на каждый запрос. Их достаточно вызвать 1 раз во время сборки проекта и записать, например, в файл с константами или в конфиг. Удобно делать такие сборки с помощью утилиты make.

Можно пойти дальше, и вместо некрасивого и непонятного хэша использовать более красивое и семантическое версионирование. Например, с помощью библиотек sebastianbergmann/version или nikolaposa/version.