summaryrefslogtreecommitdiff
path: root/util/gitconfig/gitconfig.sh
diff options
context:
space:
mode:
authorMarc Jones <marcj303@gmail.com>2017-12-13 15:21:33 -0700
committerMarc Jones <marc@marcjonesconsulting.com>2017-12-15 23:02:11 +0000
commit9ab8ae6a55681874ec194bc144077ded5363a317 (patch)
tree8c9859bbfc883f977f184bfb924b38a316291bda /util/gitconfig/gitconfig.sh
parentea0aa33ea3be908b54a07984dd8072ab1b284e90 (diff)
util/gitconfig: Make gitconfig a bash script
The gitconfig target has a few bashisms and would fail silently on systems that use a POSIX standard sh (like Ubuntu dash). Remove the code from the makefile and put it in a bash script that is called by the gitconfig target. Change-Id: I3bc8cf688a3ad211b57c8ca0e6b1e86c82dc6a37 Signed-off-by: Marc Jones <marcj303@gmail.com> Reviewed-on: https://review.coreboot.org/22857 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'util/gitconfig/gitconfig.sh')
-rwxr-xr-xutil/gitconfig/gitconfig.sh34
1 files changed, 34 insertions, 0 deletions
diff --git a/util/gitconfig/gitconfig.sh b/util/gitconfig/gitconfig.sh
new file mode 100755
index 0000000000..116e7fb809
--- /dev/null
+++ b/util/gitconfig/gitconfig.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+if [ ! -d .git ]; then
+ echo "Error: Not in a git repository"
+ exit 1
+fi
+mkdir -p .git/hooks
+for hook in commit-msg pre-commit ; do
+ if [ util/gitconfig/$hook -nt .git/hooks/$hook ] || \
+ [ ! -x .git/hooks/$hook ]; then
+ sed -e "s,%MAKE%,remake,g" util/gitconfig/$hook > .git/hooks/$hook
+ chmod +x .git/hooks/$hook
+ fi
+done
+# Now set up the hooks for 3rdparty/
+for hooks in .git/modules/{3rdparty/blobs,libhwbase,libgfxinit}/hooks; do
+ if [ -d $hooks ]; then
+ if [ util/gitconfig/commit-msg -nt $hooks/commit-msg ] || \
+ [ ! -x $hooks/commit-msg ]; then
+ sed -e "s,%MAKE%,remake,g"
+ util/gitconfig/commit-msg > $hooks/commit-msg
+ chmod +x $hooks/commit-msg
+ fi
+ fi
+done
+for d in 3rdparty/{blobs,libhwbase,libgfxinit}; do
+ if [ -d $d ]; then
+ (cd $d || exit 1
+ git config remote.origin.push HEAD:refs/for/master)
+ fi
+done
+git config remote.origin.push HEAD:refs/for/master
+git config alias.sup '!git submodule update --remote --rebase && git submodule update --init --checkout'
+git config alias.sup-destroy '!git submodule deinit --force "$(git rev-parse --show-toplevel)"; git submodule init && git submodule update --checkout'
+(git config --includes user.name >/dev/null && git config --includes user.email >/dev/null) || (printf 'Please configure your name and email in git:\n\n git config --global user.name "Your Name Comes Here"\n git config --global user.email your.email@example.com\n'; exit 1)