#!/usr/bin/env bash # # To install this script, copy it to .git/hooks/pre-commit in local copy of # tor git repo and make sure it has permission to execute. # # This is pre-commit git hook script that prevents commiting your changeset if # it fails our code formatting, changelog entry formatting, module include # rules, or best practices tracker. workdir=$(git rev-parse --show-toplevel) cd "$workdir" || exit 1 set -e if [ -n "$(ls ./changes/)" ]; then python scripts/maint/lintChanges.py ./changes/* fi if [ -d src/lib ]; then # This is the layout in 0.3.5 perl scripts/maint/checkSpace.pl -C \ src/lib/*/*.[ch] \ src/core/*/*.[ch] \ src/feature/*/*.[ch] \ src/app/*/*.[ch] \ src/test/*.[ch] \ src/test/*/*.[ch] \ src/tools/*.[ch] elif [ -d src/common ]; then # This was the layout before 0.3.5 perl scripts/maint/checkSpace.pl -C \ src/common/*/*.[ch] \ src/or/*/*.[ch] \ src/test/*.[ch] \ src/test/*/*.[ch] \ src/tools/*.[ch] fi if test -e scripts/maint/practracker/includes.py; then python scripts/maint/practracker/includes.py fi # Only call practracker if ${PT_DIR}/.enable_practracker_in_hooks exists # We do this check so that we can enable practracker in hooks in master, and # disable it on maint branches PT_DIR=scripts/maint/practracker if [ -e "${PT_DIR}/practracker.py" ]; then if [ -e "${PT_DIR}/.enable_practracker_in_hooks" ]; then if ! python3 "${PT_DIR}/practracker.py" "$workdir"; then exit 1 fi fi fi if [ -e scripts/maint/checkShellScripts.sh ]; then scripts/maint/checkShellScripts.sh fi