git hooks: návrh kontroly flake8 při commit/push
This commit is contained in:
		
							parent
							
								
									3f1c22d6ba
								
							
						
					
					
						commit
						ab984ec40c
					
				
					 4 changed files with 76 additions and 0 deletions
				
			
		
							
								
								
									
										16
									
								
								_git_hooks/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								_git_hooks/README.md
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | ||||||
|  | git hooks | ||||||
|  | ========= | ||||||
|  | 
 | ||||||
|  | Kontrola stylu pythoních zdrojáků pomocí flake8. Kontrolujeme jen změny, | ||||||
|  | abychom nenutili lidi dělat nesouvisející úpravy, které by rozbíjely historii | ||||||
|  | (git blame). | ||||||
|  | 
 | ||||||
|  | pre-commit | ||||||
|  | ---------- | ||||||
|  | * kontrola změn před commitnutím | ||||||
|  | * instalace: lokálně zkopírovat do .git/hooks (musí být spustitelný) | ||||||
|  | 
 | ||||||
|  | update | ||||||
|  | ------ | ||||||
|  | * kontrola změn přicházejících s pushem | ||||||
|  | * instalace: na atreyi zkopírovat do /akce/MaM/MaMweb/mamweb.git/hooks | ||||||
							
								
								
									
										6
									
								
								_git_hooks/pre-commit
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										6
									
								
								_git_hooks/pre-commit
									
									
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | # | ||||||
|  | # Git hook script to verify what is about to be committed. | ||||||
|  | # Checks that the changes don't introduce new flake8 errors. | ||||||
|  | 
 | ||||||
|  | git diff --unified=1 --cached HEAD -- '*py' | flake8 --diff | ||||||
							
								
								
									
										53
									
								
								_git_hooks/update
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										53
									
								
								_git_hooks/update
									
									
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,53 @@ | ||||||
|  | #!/bin/sh | ||||||
|  | 
 | ||||||
|  | # git update hook to check that pushed changes don't introduce new flake8 | ||||||
|  | # errors | ||||||
|  | 
 | ||||||
|  | # --- Command line | ||||||
|  | refname="$1" | ||||||
|  | oldrev="$2" | ||||||
|  | newrev="$3" | ||||||
|  | 
 | ||||||
|  | # --- Safety check | ||||||
|  | if [ -z "$GIT_DIR" ]; then | ||||||
|  | 	echo "Don't run this script from the command line." >&2 | ||||||
|  | 	echo " (if you want, you could supply GIT_DIR then run" >&2 | ||||||
|  | 	echo "  $0 <ref> <oldrev> <newrev>)" >&2 | ||||||
|  | 	exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then | ||||||
|  | 	echo "usage: $0 <ref> <oldrev> <newrev>" >&2 | ||||||
|  | 	exit 1 | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | TMPDIR=`mktemp -d` | ||||||
|  | TMPDIFF=`tempfile` | ||||||
|  | 
 | ||||||
|  | [ $refname != "refs/heads/master" -a $refname != "refs/heads/stable" ] && exit 0 | ||||||
|  | 
 | ||||||
|  | git diff --unified=1 $oldrev $newrev -- '*.py' >${TMPDIFF} | ||||||
|  | 
 | ||||||
|  | # there is no working tree in bare git repository, so we recreate it for flake8 | ||||||
|  | git archive $newrev | tar -x -C ${TMPDIR} | ||||||
|  | 
 | ||||||
|  | cd ${TMPDIR} | ||||||
|  | # report only errors on lines in diff | ||||||
|  | # (if threre was flake8 installed on atrey, we could just call flake8) | ||||||
|  | /akce/MaM/WWW/mamweb-test/bin/flake8 --diff <${TMPDIFF} | ||||||
|  | status=$? | ||||||
|  | if [ $status != 0 ] ; then | ||||||
|  |     echo | ||||||
|  |     echo -n "Změny, které se snažíte pushnout, obsahují kód v pythonu " | ||||||
|  |     echo -n "nevyhovující flake8 (viz výše). Opravte je a zkuste to znovu. " | ||||||
|  |     echo -n "Nezapomeňte, že můžete editovat historii (git commit --amend, " | ||||||
|  |     echo -n "git rebase -i). Pokud byste chybu příště raději odhalili už při " | ||||||
|  |     echo "commitu, zkopírujte si pre-commit hook z _git_hooks do .git/hooks." | ||||||
|  |     echo | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | rm -rf ${TMPDIR} | ||||||
|  | rm -f ${TMPDIFF} | ||||||
|  | 
 | ||||||
|  | exit $status | ||||||
|  | @ -9,6 +9,7 @@ six==1.10.0 | ||||||
| pexpect==4.0.1 | pexpect==4.0.1 | ||||||
| traitlets==4.0.0 | traitlets==4.0.0 | ||||||
| Unidecode==0.4.19 | Unidecode==0.4.19 | ||||||
|  | flake8==3.0.4 | ||||||
| 
 | 
 | ||||||
| # Django and modules | # Django and modules | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Matěj Kocián
						Matěj Kocián