Автоинкремент версии проекта при коммите в 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