исправление pre-commit hooks для корректной работы с изменёнными файлами
This commit is contained in:
@@ -17,38 +17,21 @@
|
|||||||
|
|
||||||
set -e
|
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
|
make fmt || true
|
||||||
|
|
||||||
# Проверяем, были ли изменения
|
# Проверяем какие файлы были изменены (только те, что отслеживаются git)
|
||||||
CHANGED=false
|
CHANGED_FILES=$(git diff --name-only --diff-filter=M | grep '\.go$' || true)
|
||||||
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
|
# Если файлы были изменены, добавляем их в git
|
||||||
if [ "$CHANGED" = true ]; then
|
if [ ! -z "$CHANGED_FILES" ]; then
|
||||||
git add -u
|
echo "Formatting changed the following files:"
|
||||||
|
echo "$CHANGED_FILES"
|
||||||
|
# Добавляем только измененные файлы, которые уже отслеживаются
|
||||||
|
echo "$CHANGED_FILES" | xargs -r git add
|
||||||
echo "Files were formatted and staged"
|
echo "Files were formatted and staged"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "Formatting completed"
|
||||||
# Всегда возвращаем успех
|
# Всегда возвращаем успех
|
||||||
exit 0
|
exit 0
|
@@ -20,13 +20,19 @@ set -e
|
|||||||
# Запускаем тесты с покрытием
|
# Запускаем тесты с покрытием
|
||||||
make test-coverage
|
make test-coverage
|
||||||
|
|
||||||
# Если coverage.out был изменен, добавляем его
|
# coverage.out в .gitignore, не добавляем его
|
||||||
if git diff --quiet coverage.out 2>/dev/null; then
|
# Но если скрипт coverage-badge.sh изменил какие-то файлы (например, README с бейджем),
|
||||||
echo "Coverage unchanged"
|
# они будут добавлены
|
||||||
else
|
CHANGED_FILES=$(git diff --name-only --diff-filter=M | grep -v '\.out$' | grep -v '^coverage' || true)
|
||||||
git add coverage.out 2>/dev/null || true
|
|
||||||
echo "Coverage updated and staged"
|
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
|
fi
|
||||||
|
|
||||||
|
echo "Tests completed successfully"
|
||||||
# Всегда возвращаем успех если тесты прошли
|
# Всегда возвращаем успех если тесты прошли
|
||||||
exit 0
|
exit 0
|
Reference in New Issue
Block a user