2017-01-27 2 views
2

프로젝트에 미리 커밋 훅을 추가하려고합니다. ./.git/hook/pre-commit을 실행하면 적절한 결과가 나타납니다.
변수 OUTPUT을 커밋하는 것은 항상 비어 있습니다.사전 커밋 훅이 작동하지 않습니다.

#!/bin/bash 
OUTPUT=`git diff | flake8 --diff` 


if [ -z "${OUTPUT}" ] 
then 
     echo "================== You are awesome ====================" 
     echo "${OUTPUT}" 
     exit 1 
else 
     echo "" 
     echo "================== Your code stinks, Fix them ====================" 
     echo "" 
     echo "${OUTPUT}" 
     exit 1 
fi 
exit 1 

답변

0

후크는 다른 환경에서 실행됩니다. 특히 사용자를 위해 PATH를 설정하지 않았을 수 있습니다. gitflake8과 같이 호출하는 실행 파일의 전체 경로를 사용하여 작동하는지 확인하십시오.

0

git diff은 변경 사항을 보여줍니다. 변경 사항은 이 아니며이 커밋됩니다. pre-commit 훅 내에서 부분 커밋을 수행하지 않으면 출력이 비어있게됩니다.

원하는 것은 git diff --staged입니다. 커밋 할 변경 사항이 표시되며 flake8을 사용하여 확인하려는 부분입니다.

후크 내에서 git status을 실행하고 "커밋 할 변경 내용 :"및 "커밋되지 않은 변경 내용 :"섹션을보고 의미를 이해할 수 있습니다.

또한 exit 1 중 하나는 exit 0이어야합니다.

관련 문제