From 64605f8e60d0d56033d321416bcea11701406ae5 Mon Sep 17 00:00:00 2001 From: Marcio Mazza Date: Wed, 21 Feb 2018 11:54:14 -0300 Subject: [PATCH] Simplifica git pre-commit hook para melhor desempenho --- check_migrations.sh | 36 +++++++++++++++++++++--------------- scripts/hooks/pre-commit | 17 +++++------------ 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/check_migrations.sh b/check_migrations.sh index 2933bdbcd..8e8f1c298 100755 --- a/check_migrations.sh +++ b/check_migrations.sh @@ -1,5 +1,24 @@ #!/bin/bash +falha () +{ + NC='\033[0m' + RED='\033[0;31m' + echo + echo -e "${RED}ALGUMAS ALTERAÇÕES EXIGEM MIGRAÇÃO.${NC}" + echo -e "${RED}RODE 'python manage.py makemigrations' ANTES DE SUBMETER SEU CÓDIGO...${NC}" + echo -e "${RED}lembre de adicionar os arquivos criados ao git com 'git add .' ou semelhante.${NC}" + echo + exit 1 +} + +# deve haver alguma migration nova no commit +if ! git diff --cached --name-status | grep -q '^A.*/migrations/[[:digit:]]\{4\}_.*\.py$'; then + falha +fi + +# a verificação de migrations pendentes deve passar + # TODO: Após migrar para Django 1.10 usar # # ./manage.py makemigrations --check --dry-run @@ -9,19 +28,6 @@ # A chamada do django 1.10 INVERTE ISSO. # # https://docs.djangoproject.com/en/1.10/ref/django-admin/#cmdoption-makemigrations-check - -python manage.py makemigrations --dry-run --exit - -MIGRATIONS=$? - -NC='\033[0m' - -if [ $MIGRATIONS -eq 0 ]; then - RED='\033[0;31m' - echo - echo -e "${RED}ALGUMAS ALTERAÇÕES EXIGEM MIGRAÇÃO.${NC}" - echo -e "${RED}RODE 'python manage.py makemigrations' ANTES DE SUBMETER SEU CÓDIGO...${NC}" - echo -e "${RED}lembre de adicionar os arquivos criados ao git com 'git add .' ou semelhante.${NC}" - echo - exit 1 +if python manage.py makemigrations --dry-run --exit > /dev/null; then + falha fi \ No newline at end of file diff --git a/scripts/hooks/pre-commit b/scripts/hooks/pre-commit index 3df8427d6..de82032c1 100755 --- a/scripts/hooks/pre-commit +++ b/scripts/hooks/pre-commit @@ -1,15 +1,8 @@ #!/bin/bash -# aqui apenas reportamos, não impedimos o commit -./check_qa.sh -if [ $? -eq 1 ] -then - RED='\033[0;31m' - echo - echo -e "${RED}#### POR FAVOR, CORRIJA OS PROBLEMAS APONTADOS!!! ####${NC}" - echo +# verifica antes se houve modificação em algum arquivo models.py +if git diff --cached --name-status | grep -q '^M.*models\.py$'; then + # se a checagem de migrations falhar impedimos o commit + set -e + ./check_migrations.sh fi - -# se os comandos a seguir falharem impedimos o commit -set -e -./check_migrations.sh