You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
904 B
31 lines
904 B
#!/bin/sh
|
|
|
|
if [ $(basename "$0") != "install" ]; then
|
|
if [ -x "$0.local" ]; then
|
|
"$0.local" "$@" || exit $?
|
|
fi
|
|
if [ -x hooks/$(basename $0) ]; then
|
|
hooks/$(basename $0) "$0" || exit $?
|
|
fi
|
|
else
|
|
pushd "$(git rev-parse --show-toplevel)"
|
|
python <<\EOF
|
|
import os, os.path
|
|
TOP = os.path.realpath(".")
|
|
HOOKS = os.path.realpath(".git/hooks")
|
|
src = os.path.join(TOP, "hooks", "install")
|
|
for hook in os.listdir("hooks"):
|
|
if hook != "install":
|
|
tgt = HOOKS + os.sep + hook
|
|
# there is a file there
|
|
if os.path.isfile(tgt) and os.access(tgt, os.X_OK):
|
|
if os.path.realpath(tgt) != src:
|
|
print("hook " + hook + " is already installed. Moving to " + hook + ".local")
|
|
os.rename(tgt, tgt + ".local")
|
|
if os.path.lexists(tgt):
|
|
os.unlink(tgt)
|
|
os.symlink(os.path.relpath(os.path.realpath("hooks/install"), os.path.realpath(".git/hooks/")), tgt)
|
|
EOF
|
|
popd
|
|
fi
|