31 lines
		
	
	
		
			904 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			904 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/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
 |