исправление pre-commit hooks для корректной работы с изменёнными файлами
Some checks failed
Pre-commit / pre-commit (push) Successful in 5m31s
Create Release / changelog (push) Failing after 2m29s

This commit is contained in:
2025-08-27 00:49:16 +03:00
parent bad225c6b1
commit 6af712f1d5
2 changed files with 20 additions and 31 deletions

View File

@@ -17,38 +17,21 @@
set -e
# Сохраняем хеши файлов до форматирования
TEMP_DIR=$(mktemp -d)
find . -name "*.go" -type f | while read file; do
if [ -f "$file" ]; then
md5sum "$file" > "$TEMP_DIR/$(basename $file).md5" 2>/dev/null || true
fi
done
# Запускаем форматирование
make fmt || true
# Проверяем, были ли изменения
CHANGED=false
find . -name "*.go" -type f | while read file; do
if [ -f "$file" ] && [ -f "$TEMP_DIR/$(basename $file).md5" ]; then
OLD_MD5=$(cat "$TEMP_DIR/$(basename $file).md5" | awk '{print $1}')
NEW_MD5=$(md5sum "$file" | awk '{print $1}')
if [ "$OLD_MD5" != "$NEW_MD5" ]; then
CHANGED=true
break
fi
fi
done
# Удаляем временную директорию
rm -rf "$TEMP_DIR"
# Проверяем какие файлы были изменены (только те, что отслеживаются git)
CHANGED_FILES=$(git diff --name-only --diff-filter=M | grep '\.go$' || true)
# Если файлы были изменены, добавляем их в git
if [ "$CHANGED" = true ]; then
git add -u
if [ ! -z "$CHANGED_FILES" ]; then
echo "Formatting changed the following files:"
echo "$CHANGED_FILES"
# Добавляем только измененные файлы, которые уже отслеживаются
echo "$CHANGED_FILES" | xargs -r git add
echo "Files were formatted and staged"
fi
echo "Formatting completed"
# Всегда возвращаем успех
exit 0

View File

@@ -20,13 +20,19 @@ set -e
# Запускаем тесты с покрытием
make test-coverage
# Если coverage.out был изменен, добавляем его
if git diff --quiet coverage.out 2>/dev/null; then
echo "Coverage unchanged"
else
git add coverage.out 2>/dev/null || true
echo "Coverage updated and staged"
# coverage.out в .gitignore, не добавляем его
# Но если скрипт coverage-badge.sh изменил какие-то файлы (например, README с бейджем),
# они будут добавлены
CHANGED_FILES=$(git diff --name-only --diff-filter=M | grep -v '\.out$' | grep -v '^coverage' || true)
if [ ! -z "$CHANGED_FILES" ]; then
echo "Test coverage updated the following files:"
echo "$CHANGED_FILES"
# Добавляем только измененные файлы, которые уже отслеживаются
echo "$CHANGED_FILES" | xargs -r git add
echo "Files were updated and staged"
fi
echo "Tests completed successfully"
# Всегда возвращаем успех если тесты прошли
exit 0