[misc] Add git-hooks
This commit is contained in:
parent
16c0d101be
commit
6255452923
|
@ -7,6 +7,10 @@
|
||||||
3. Activate your dev environment with `source .venv/bin/activate`
|
3. Activate your dev environment with `source .venv/bin/activate`
|
||||||
4. Install with `pip install .`
|
4. Install with `pip install .`
|
||||||
5. Install development dependencies with `pip install tox black`
|
5. Install development dependencies with `pip install tox black`
|
||||||
|
6. Add git-hook to run test and stylecheck before commmit with
|
||||||
|
`ln -s ../../git-hooks/pre-commit .git/hooks/pre-commit`
|
||||||
|
7. Add git-hook to check commmit message format with
|
||||||
|
`ln -s ../../git-hooks/commit-msg .git/hooks/commit-msg`
|
||||||
|
|
||||||
### Build and Test Cycle
|
### Build and Test Cycle
|
||||||
|
|
||||||
|
|
13
git-hooks/commit-msg
Executable file
13
git-hooks/commit-msg
Executable file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (C) 2020 by Thomas Lindner <tom@dl6tom.de>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: 0BSD
|
||||||
|
#
|
||||||
|
# client-side git-hook - checks commit message style
|
||||||
|
|
||||||
|
head -n 1 "$1" | egrep -x '\[[^]]+\] [[:upper:]].*[^.]' > /dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "commit message doesn't match style" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
9
git-hooks/pre-commit
Executable file
9
git-hooks/pre-commit
Executable file
|
@ -0,0 +1,9 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (C) 2020 by Thomas Lindner <tom@dl6tom.de>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: 0BSD
|
||||||
|
#
|
||||||
|
# client-side git-hook - run tests and stylechecker
|
||||||
|
|
||||||
|
exec tox
|
36
git-hooks/update
Executable file
36
git-hooks/update
Executable file
|
@ -0,0 +1,36 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (C) 2020 by Thomas Lindner <tom@dl6tom.de>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: 0BSD
|
||||||
|
#
|
||||||
|
# server-side git-hook - checks branch policy
|
||||||
|
|
||||||
|
refname="$1"
|
||||||
|
oldrev="$2"
|
||||||
|
newrev="$3"
|
||||||
|
|
||||||
|
forbid_merge_commmits() {
|
||||||
|
if [ "$(git log --merges "$oldrev..$newrev")" ]; then
|
||||||
|
echo "merge commmits not allowed" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
only_ff_to() {
|
||||||
|
ff_branch="$1"
|
||||||
|
git rev-list "$oldrev..$ff_branch" | fgrep -x "$newrev" > /dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "only fast-forward to $ff_branch allowed" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$refname" in
|
||||||
|
refs/heads/master)
|
||||||
|
only_ff_to development
|
||||||
|
;;
|
||||||
|
refs/heads/*)
|
||||||
|
forbid_merge_commits
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Reference in a new issue