1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-09-16 09:26:22 +02:00

chore(go): add pre-commit hook (#1006)

* chore(go): add pre-commit hook
run go mod tidy
add description

* use bash

* adjust indentation

* fix code climate issue

* docs: clarify git hook usage description

* Update .hooks/README.md
This commit is contained in:
Christopher Fenner
2019-11-27 21:16:01 +01:00
committed by GitHub
parent d57e506217
commit 174d24460c
2 changed files with 44 additions and 0 deletions

33
.hooks/README.md Normal file
View File

@@ -0,0 +1,33 @@
# Git Hooks
From [Git docs](https://git-scm.com/docs/githooks#_description):
> Hooks are programs you can place in a hooks directory to trigger actions at certain points in git’s execution. Hooks that don’t have the executable bit set are ignored.
## Usage
To use the hook, execute this command in the project root directory to link the script into the `.git/hooks` directory:
```sh
ln -s -f ../../.hooks/pre-commit ./.git/hooks/pre-commit
```
Make sure the file is executable:
```sh
chmod +x ./.hooks/pre-commit
```
## Pre-Commit Hook
From [Git docs](https://git-scm.com/docs/githooks#_pre_commit):
> This hook is invoked by git-commit, and can be bypassed with the --no-verify option. It takes no parameters, and is invoked before obtaining the proposed commit log message and making a commit. Exiting with a non-zero status from this script causes the git commit command to abort before creating a commit.
### Content
Executes `go mod tidy` and stages `go.mod` & `go.sum`.
From [Golang docs](https://github.com/golang/go/wiki/Modules):
> `go mod tidy` — Prune any no-longer-needed dependencies from `go.mod` and add any dependencies needed for other combinations of OS, architecture, and build tags (details).

11
.hooks/pre-commit Executable file
View File

@@ -0,0 +1,11 @@
#!/bin/bash
STAGED_GO_FILES=$(git diff --staged --name-only | grep "\.go$")
if [[ "$STAGED_GO_FILES" = "" ]]; then
exit 0
fi
echo "cleaning GO dependencies"
go mod tidy
git add go.mod go.sum