Автоинкремент версии проекта при коммите в git
Задача: автоматически инкрементировать номер версии мелких иземений (третью цифру в последовательности чисел 1.2.3) для переменной version в файле package.json при коммите в ветку dev.
Для решения задачи можно использовать механизм хуков git, который реализуется автоматическим исполнением скриптов с определенными именами в подпапке .git/hooks корневой директории проекта при определенных действиях.
По умолчанию папка хуков содержит набор bash–скриптов с примерами и расширением .sample.
В контексте поставленной задачи нас интересует скрипт с именем pre-commit.sample.
Для того, чтобы скрипт начал выполнятся автоматически перед определенным действием, его необходимо переименовать убрав расширение и сделать файл исполняемым. Обычно я не удаляю файлы с примерами, а создаю новый файл (команды нужно выполнять из корня проекта):
cd .git/hooks
touch pre-commit
chmod +x pre-commit
Скрипт, решающий описанную в начале статьи задачу, может выглядеть так:
#!/bin/bash
devChanged="$(git branch | grep \* | cut -d ' ' -f2-)"
if [[ $devChanged == dev ]]; then
curVersion=$(cat package.json | grep version | awk '{print $2}' | sed 's/"//g' | sed 's/,//g')
newVersion=( ${curVersion//./ } )
((newVersion[2]++))
cat package.json | sed "s/version\": \"${curVersion}/version\": \"${newVersion
[0]}.${newVersion[1]}.${newVersion[2]}/" > package.json.temp
mv package.json.temp package.json
git add package.json
fi