From 3ffa09de192d81305acd2233167eae91de856e3f Mon Sep 17 00:00:00 2001 From: Brandon Bayer Date: Thu, 29 Sep 2016 16:25:31 -0500 Subject: chore: add pre-commit/pre-push hooks to prevent GitLab submodules on master --- scripts/git-hooks/pre-commit | 18 ++++++++++++++++++ scripts/git-hooks/pre-push | 18 ++++++++++++++++++ setup.sh | 5 +++++ 3 files changed, 41 insertions(+) create mode 100755 scripts/git-hooks/pre-commit create mode 100755 scripts/git-hooks/pre-push diff --git a/scripts/git-hooks/pre-commit b/scripts/git-hooks/pre-commit new file mode 100755 index 0000000..f930ca7 --- /dev/null +++ b/scripts/git-hooks/pre-commit @@ -0,0 +1,18 @@ +#!/bin/bash + +currentBranch=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p') + +if [ "$currentBranch" == "master" ]; then + gitlabOccurances=$(grep -c -m1 gitlab .gitmodules) + + if [ $gitlabOccurances -eq 1 ]; then + echo "COMMIT INVALID: You can't commit anything to the master branch that pulls +from GitLab because outsiders won't be able to build it. + +If you need to use a submodule from GitLab, do so from a branch." + exit 1 + fi +fi + +exit 0 # Everything is good + diff --git a/scripts/git-hooks/pre-push b/scripts/git-hooks/pre-push new file mode 100755 index 0000000..85b5095 --- /dev/null +++ b/scripts/git-hooks/pre-push @@ -0,0 +1,18 @@ +#!/bin/bash + +currentBranch=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p') + +if [ "$currentBranch" == "master" ]; then + gitlabOccurances=$(grep -c -m1 gitlab .gitmodules) + + if [ $gitlabOccurances -eq 1 ]; then + echo "PUSH ERROR: You can't push anything to the master branch that pulls +from GitLab because outsiders won't be able to build it. + +If you need to use a submodule from GitLab, do so from a branch." + exit 1 + fi +fi + +exit 0 # Everything is good + diff --git a/setup.sh b/setup.sh index 6f090cf..ec460f5 100755 --- a/setup.sh +++ b/setup.sh @@ -2,6 +2,11 @@ set -e +echo "" +echo "Setting up git hooks..." +ln -s ../../scripts/git-hooks/pre-commit .git/hooks/pre-commit +ln -s ../../scripts/git-hooks/pre-push .git/hooks/pre-push + echo "" echo "Updating git submodules..." git submodule update --init -- cgit v1.2.3