| #!/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 |