Автоматическое добавление номера задачи в коммит
Привет, Хабр! 👋
Хочу поделиться небольшой, но полезной фичей, которая упростила мне жизнь при оформлении коммитов.
В своей работе я придерживаюсь структурированного подхода к именованию веток и сообщений коммитов. Подробнее об этом можно почитать здесь:
📎 https://habr.com/ru/articles/820547/
Я использую предложенные в статье правила, немного адаптировав их под себя. Например, добавляю номер задачи в текст коммита — это сильно упрощает анализ изменений при подготовке релиза.
Почему это удобно?
Указание номера задачи позволяет быстро понять, какие именно тикеты попадают в релиз. Особенно это помогает при ревью и при деплое.
Пример структуры ветки:
feat/dev-123_filter или fix/dev-432_filter
Сообщения коммитов я пишу в следующем формате:
dev-123 | настроил сортировку в фильтре
Чтобы не вставлять руками номер задачи каждый раз, я написал небольшой shell-скрипт, который делает это автоматически.
Скрипт prepare-commit-msg
#!/bin/sh
COMMIT_MSG_FILE=".git/COMMIT_EDITMSG"
BRANCH_NAME=$(git rev-parse --abbrev-ref HEAD)
if echo "$BRANCH_NAME" | grep -qE 'dev-[0-9]+'; then
TASK_ID=$(echo "$BRANCH_NAME" | grep -oE 'dev-[0-9]+')
if ! grep -q "$TASK_ID" "$COMMIT_MSG_FILE"; then
sed -i.bak "1s/^/$TASK_ID | /" "$COMMIT_MSG_FILE"
rm -f "$COMMIT_MSG_FILE.bak"
fi
fi
Скрипт нужно сохранить как .git/hooks/prepare-commit-msg
и сделать исполняемым:
chmod +x .git/hooks/prepare-commit-msg
Как это работает?
COMMIT_MSG_FILE
— путь до файла, в который Git записывает текст коммита.BRANCH_NAME
— название текущей ветки.Сначала проверяется, есть ли в названии ветки номер задачи (
dev-123
).Если он найден и ещё не указан в коммите — скрипт добавляет его в начало первой строки сообщения.
Таким образом, ваш коммит автоматически будет выглядеть так:
dev-123 | добавил пагинацию в список товаров
Вроде мелочь, а приятно — экономит время и упрощает навигацию по истории коммитов.
Если будет интересно — это и другие полезные скрипты, на моём GitHub
Спасибо за внимание! ✌️