summaryrefslogtreecommitdiffstats
path: root/util/git-hooks
diff options
context:
space:
mode:
authorNico Huber <nico.h@gmx.de>2017-12-22 02:09:18 +0100
committerNico Huber <nico.h@gmx.de>2018-02-21 21:20:50 +0000
commit4164c54196deca789b80e6a0b1be5f70e142b729 (patch)
tree1ac54bf4faea74f55f26f82bb7b757d9522cacfb /util/git-hooks
parentcbb46e261d5f2837df21e0853c7cd4170d226b40 (diff)
downloadflashrom-4164c54196deca789b80e6a0b1be5f70e142b729.tar.gz
flashrom-4164c54196deca789b80e6a0b1be5f70e142b729.tar.bz2
flashrom-4164c54196deca789b80e6a0b1be5f70e142b729.zip
git-hooks: Fix install script for various git versions
There are older versions of git-rev-parse that don't understand the `--git-path` switch. Also, when the install script was written, git- rev-parse had a bug when it wasn't run from the root directory. They fixed the behaviour by now. To simplify things and not have to account for that too, we just bail out when the script is run from a sub- directory. Change-Id: I7ee8d4d54db48f7207fe8abf895c7fbba7685ad2 Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/22971 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: David Hendricks <david.hendricks@gmail.com>
Diffstat (limited to 'util/git-hooks')
-rwxr-xr-xutil/git-hooks/install.sh20
1 files changed, 15 insertions, 5 deletions
diff --git a/util/git-hooks/install.sh b/util/git-hooks/install.sh
index d557c2f8a..fda0098f6 100755
--- a/util/git-hooks/install.sh
+++ b/util/git-hooks/install.sh
@@ -3,18 +3,28 @@
root=$(git rev-parse --show-cdup 2>/dev/null) || \
{ echo "Not under git control. Cannot install git hooks." >&2 ; exit 0 ; }
-dst="${root}"$(git rev-parse --git-path hooks/)
+[ -z "${root}" ] || \
+ { echo "Not in root directory. Can only run from git root." >&2 ; exit 1 ; }
+
src=util/git-hooks/ # relative to root
-hooks=$(cd "${root}${src}" && git ls-files -c | grep -Ev 'install.sh|wrapper.sh')
+hooks=$(cd "${src}" && git ls-files -c | grep -Ev 'install.sh|wrapper.sh')
+
+if [ "$(git rev-parse --git-path 2>/dev/null)" = "--git-path" ]; then
+ # very old git, we have to guess
+ dst=".git/hooks/"
+ rel="../../"
+else
+ dst=$(git rev-parse --git-path hooks/)
+ rel=$(git rev-parse --prefix "${dst}" --show-cdup)
+fi
for h in $hooks; do
# Test if hook is not already installed, i.e. doesn't point at the wrapper
- if [ ! "${dst}$h" -ef "${root}${src}wrapper.sh" ]; then
+ if [ ! "${dst}$h" -ef "${src}wrapper.sh" ]; then
# preserve custom hooks if any
if [ -e "${dst}$h" ]; then
mv "${dst}$h" "${dst}$h.local"
fi
- ln -s "$(git rev-parse --prefix $(git rev-parse --git-path hooks/) --show-cdup)${src}wrapper.sh" \
- "${dst}$h"
+ ln -s "${rel}${src}wrapper.sh" "${dst}$h"
fi
done