mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-10-31 18:28:13 +00:00 
			
		
		
		
	Switch git hooks to use pre-commit
This commit is contained in:
		| @@ -105,8 +105,7 @@ directory. This will keep you from accidentally committing non-gofmt'd go code. | ||||
|  | ||||
| ``` | ||||
| cd kubernetes/.git/hooks/ | ||||
| ln -s ../../hooks/prepare-commit-msg . | ||||
| ln -s ../../hooks/commit-msg . | ||||
| ln -s ../../hooks/pre-commit . | ||||
| ``` | ||||
|  | ||||
| ## Unit tests | ||||
|   | ||||
| @@ -1,10 +0,0 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| if [[ "$(grep -c "COMMIT_BLOCKED" $1)" -gt 0 ]]; then | ||||
|   echo "FAILED: Unresolved errors - aborting the commit." | ||||
|   echo "The message of your attempted commit was:" | ||||
|   cat $1 | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
| exit 0 | ||||
| @@ -6,6 +6,7 @@ files_need_gofmt=() | ||||
| files_need_boilerplate=() | ||||
| files_need_description=() | ||||
| 
 | ||||
| echo -ne "Checking for files that need gofmt..." | ||||
| files=($(git diff --cached --name-only --diff-filter ACM | grep "\.go" | grep -v -e "third_party" -e "Godeps")) | ||||
| for file in "${files[@]}"; do | ||||
|   # Check for files that fail gofmt. | ||||
| @@ -14,7 +15,9 @@ for file in "${files[@]}"; do | ||||
|     files_need_gofmt+=("${file}") | ||||
|   fi | ||||
| done | ||||
| echo "done" | ||||
| 
 | ||||
| echo -ne "Checking for files that need boilerplate..." | ||||
| boiler="${KUBE_HOOKS_DIR}/boilerplate.py" | ||||
| # Check for go files without the required boilerplate. | ||||
| if [[ ${#files[@]} -gt 0 ]]; then | ||||
| @@ -32,7 +35,9 @@ files=($(git diff --cached --name-only --diff-filter ACM | grep "\.py" | grep -v | ||||
| if [[ ${#files} -gt 0 ]]; then | ||||
|   files_need_boilerplate+=($("${boiler}" "py" "${files[@]}")) | ||||
| fi | ||||
| echo "done" | ||||
| 
 | ||||
| echo -ne "Checking for API descriptions..." | ||||
| # Check API schema definitions for field descriptions | ||||
| for file in $(git diff --cached --name-only --diff-filter ACM | egrep "pkg/api/v.[^/]*/types\.go" | grep -v "third_party"); do | ||||
|   # Check for files with fields without description tags | ||||
| @@ -41,59 +46,48 @@ for file in $(git diff --cached --name-only --diff-filter ACM | egrep "pkg/api/v | ||||
|     files_need_description+=("${file}") | ||||
|   fi | ||||
| done | ||||
| echo "done" | ||||
| 
 | ||||
| ret=0 | ||||
| if [[ "${#files_need_gofmt[@]}" -ne 0 ]]; then | ||||
|   ( | ||||
|     echo | ||||
|     echo "# *** ERROR: *** Some files have not been gofmt'd.  To fix these" | ||||
|     echo "# errors, run gofmt -s -w <file>, or cut and paste the following:" | ||||
|     echo "#   gofmt -s -w ${files_need_gofmt[@]}" | ||||
|     echo "#" | ||||
|     echo "# Your commit will be aborted unless you override this warning. To" | ||||
|     echo "# commit in spite of these format errors, delete the following line:" | ||||
|     echo "#   COMMIT_BLOCKED_ON_GOFMT" | ||||
|   ) >> $1 | ||||
|   echo | ||||
|   echo "# *** ERROR: *** Some files have not been gofmt'd.  To fix these" | ||||
|   echo "# errors, run gofmt -s -w <file>, or cut and paste the following:" | ||||
|   echo "#   gofmt -s -w ${files_need_gofmt[@]}" | ||||
|   echo | ||||
|   ret=1 | ||||
| fi | ||||
| 
 | ||||
| if [[ "${#files_need_boilerplate[@]}" -ne 0 ]]; then | ||||
|   ( | ||||
|     echo | ||||
|     echo "# *** ERROR: *** Some files are missing the required boilerplate" | ||||
|     echo "# header from hooks/boilerplate.txt:" | ||||
|     for file in "${files_need_boilerplate[@]}"; do | ||||
|       echo "#   ${file}" | ||||
|     done | ||||
|     echo "#" | ||||
|     echo "# Your commit will be aborted unless you fix these." | ||||
|     echo "#   COMMIT_BLOCKED_ON_BOILERPLATE" | ||||
|     echo | ||||
|   ) >> $1 | ||||
|   echo | ||||
|   echo "# *** ERROR: *** Some files are missing the required boilerplate" | ||||
|   echo "# header from hooks/boilerplate.txt:" | ||||
|   for file in "${files_need_boilerplate[@]}"; do | ||||
|     echo "#   ${file}" | ||||
|   done | ||||
|   echo | ||||
|   ret=1 | ||||
| fi | ||||
| 
 | ||||
| if [[ "${#files_need_description[@]}" -ne 0 ]]; then | ||||
|   ( | ||||
|     echo | ||||
|     echo "# *** ERROR: *** Some API files are missing the required field descriptions" | ||||
|     echo "# Add description tags to all non-inline fields in the following files:" | ||||
|     for file in "${files_need_description[@]}"; do | ||||
|       echo "#   ${file}" | ||||
|     done | ||||
|     echo "#" | ||||
|     echo "# Your commit will be aborted unless you fix these." | ||||
|     echo "#   COMMIT_BLOCKED_ON_DESCRIPTION" | ||||
|     echo | ||||
|   ) >> $1 | ||||
|   echo | ||||
|   echo "# *** ERROR: *** Some API files are missing the required field descriptions" | ||||
|   echo "# Add description tags to all non-inline fields in the following files:" | ||||
|   for file in "${files_need_description[@]}"; do | ||||
|     echo "#   ${file}" | ||||
|   done | ||||
|   echo | ||||
|   ret=1 | ||||
| fi | ||||
| 
 | ||||
| echo -ne "Checking for docs that need updating..." | ||||
| if ! hack/verify-gendocs.sh > /dev/null; then | ||||
|   ( | ||||
|     echo | ||||
|     echo "# *** ERROR: *** docs are out of sync between cli and markdown" | ||||
|     echo "# run hack/run-gendocs.sh > docs/kubectl.md to regenerate" | ||||
|     echo | ||||
|     echo "#" | ||||
|     echo "# Your commit will be aborted unless you regenerate docs." | ||||
|     echo "    COMMIT_BLOCKED_ON_GENDOCS" | ||||
|     echo | ||||
|   ) >> $1 | ||||
|   echo | ||||
|   echo "# *** ERROR: *** docs are out of sync between cli and markdown" | ||||
|   echo "# run hack/run-gendocs.sh > docs/kubectl.md to regenerate" | ||||
|   echo | ||||
|   ret=1 | ||||
| fi | ||||
| echo "done" | ||||
| 
 | ||||
| exit $ret | ||||
		Reference in New Issue
	
	Block a user
	 Tim Hockin
					Tim Hockin