Merge remote-tracking branch 'tor-github/pr/1241'

This commit is contained in:
Nick Mathewson 2019-08-26 10:15:25 -04:00
commit eff95429fd
4 changed files with 29 additions and 17 deletions

4
changes/bug31462 Normal file
View File

@ -0,0 +1,4 @@
o Minor bugfixes (git hooks):
- Remove a duplicate call to practracker from the pre-push hook.
The pre-push hook already calls the pre-commit hook, which calls
practracker. Fixes bug 31462; bugfix on 0.4.1.1-alpha.

View File

@ -1,5 +1,7 @@
o Minor features (git hooks): o Minor features (git hooks):
- Our pre-push git hook now checks for a special file - Our pre-commit git hook now checks for a special file
before running practracker, so that it only runs on branches before running practracker, so that practracker only runs on branches
that are based on master. that are based on master. Since the pre-push hook calls the pre-commit
hook, practracker will also only run before pushes of branches based
on master.
Closes ticket 30979. Closes ticket 30979.

View File

@ -4,7 +4,8 @@
# tor git repo and make sure it has permission to execute. # tor git repo and make sure it has permission to execute.
# #
# This is pre-commit git hook script that prevents commiting your changeset if # This is pre-commit git hook script that prevents commiting your changeset if
# it fails our code formatting or changelog entry formatting checkers. # it fails our code formatting, changelog entry formatting, module include
# rules, or best practices tracker.
workdir=$(git rev-parse --show-toplevel) workdir=$(git rev-parse --show-toplevel)
@ -40,6 +41,15 @@ if test -e scripts/maint/practracker/includes.py; then
python scripts/maint/practracker/includes.py python scripts/maint/practracker/includes.py
fi fi
if [ -e scripts/maint/practracker/practracker.py ]; then # Only call practracker if ${PT_DIR}/.enable_practracker_in_hooks exists
python3 ./scripts/maint/practracker/practracker.py "$workdir" # 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 fi

View File

@ -1,10 +1,11 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# git pre-push hook script to: # git pre-push hook script to:
# 0) Call the pre-commit hook, if it is available
# 1) prevent "fixup!" and "squash!" commit from ending up in master, release-* # 1) prevent "fixup!" and "squash!" commit from ending up in master, release-*
# or maint-* # or maint-*
# 2) Disallow pushing branches other than master, release-* # 2) Disallow pushing branches other than master, release-*
# and maint-* to origin (e.g. gitweb.torproject.org). # and maint-* to origin (e.g. gitweb.torproject.org)
# #
# To install this script, copy it into .git/hooks/pre-push path in your # To install this script, copy it into .git/hooks/pre-push path in your
# local copy of git repository. Make sure it has permission to execute. # local copy of git repository. Make sure it has permission to execute.
@ -21,6 +22,11 @@ z40=0000000000000000000000000000000000000000
upstream_name=${TOR_UPSTREAM_REMOTE_NAME:-"upstream"} upstream_name=${TOR_UPSTREAM_REMOTE_NAME:-"upstream"}
# Are you adding a new check to the git hooks?
# - Common checks belong in the pre-commit hook
# - Push-only checks belong in the pre-push hook
#
# Call the pre-commit hook for the common checks, if it is executable.
workdir=$(git rev-parse --show-toplevel) workdir=$(git rev-parse --show-toplevel)
if [ -x "$workdir/.git/hooks/pre-commit" ]; then if [ -x "$workdir/.git/hooks/pre-commit" ]; then
if ! "$workdir"/.git/hooks/pre-commit; then if ! "$workdir"/.git/hooks/pre-commit; then
@ -28,16 +34,6 @@ if [ -x "$workdir/.git/hooks/pre-commit" ]; then
fi fi
fi fi
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
remote="$1" remote="$1"
remote_name=$(git remote --verbose | grep "$2" | awk '{print $1}' | head -n 1) remote_name=$(git remote --verbose | grep "$2" | awk '{print $1}' | head -n 1)