annotate scripts/validate-commits @ 7633:1bafb2d07709 stable

hooks: make the Python interpreter for Git hooks configurable as 'git_hook_interpreter' (Issue #333) Commit 5e501b6ee639 introduced the use of 'sys.executable' as interpreter for git hooks instead of 'python2' with the following argument: "Windows doesn't necessarily have "python2" available in $PATH, but we still want to make sure we don't end up invoking a python3. Using the absolute path seems more safe." But, sys.executable does not necessarily point to Python. When Kallithea is started under uWSGI, sys.executable points to the uwsgi executable. As a result, the interpreter encoded in the git hooks on the server repositories would be: #!/path/to/uwsgi And pushing to such repo would result in following client errors: $ git push Password for 'http://user@localhost:5050': Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Writing objects: 100% (3/3), 241 bytes | 241.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: unable to load configuration from hooks/pre-receive To http://localhost:5050/gitrepo-new ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'http://user@localhost:5050/gitrepo-new' Fix this problem by introducing a configuration setting 'git_hook_interpreter' that allow administrators to specify which Python interpreter to use. A subsequent commit will cause its value to be filled in automatically when generating a new ini file, but an administrator can always override it.
author Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
date Mon, 08 Apr 2019 21:32:57 +0200
parents 69f70de15f26
children d9e37f7fd35b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7503
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
1 #!/usr/bin/env bash
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
2 # Validate the specified commits against test suite and other checks.
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
3
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
4 if [ -n "$VIRTUAL_ENV" ]; then
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
5 echo "Please run this script from outside a virtualenv."
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
6 exit 1
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
7 fi
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
8
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
9 if ! hg update --check -q .; then
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
10 echo "Working dir is not clean, please commit/revert changes first."
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
11 exit 1
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
12 fi
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
13
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
14 venv=$(mktemp -d kallithea-validatecommits-env-XXXXXX)
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
15 resultfile=$(mktemp kallithea-validatecommits-result-XXXXXX)
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
16 echo > "$resultfile"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
17
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
18 cleanup()
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
19 {
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
20 rm -rf /tmp/kallithea-test*
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
21 rm -rf "$venv"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
22 }
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
23 finish()
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
24 {
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
25 cleanup
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
26 # print (possibly intermediate) results
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
27 cat "$resultfile"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
28 rm "$resultfile"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
29 }
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
30 trap finish EXIT
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
31
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
32 for rev in $(hg log -r "$1" -T '{node}\n'); do
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
33 hg log -r "$rev"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
34 hg update "$rev"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
35
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
36 cleanup
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
37 virtualenv -p "$(command -v python2)" "$venv"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
38 source "$venv/bin/activate"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
39 pip install --upgrade pip setuptools
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
40 pip install -e .
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
41 pip install -r dev_requirements.txt
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
42 pip install python-ldap python-pam
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
43
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
44 # run-all-cleanup
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
45 scripts/run-all-cleanup
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
46 if ! hg update --check -q .; then
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
47 echo "run-all-cleanup did not give clean results!"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
48 result="NOK"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
49 hg diff
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
50 hg revert -a
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
51 else
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
52 result=" OK"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
53 fi
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
54 echo "$result: $rev (run-all-cleanup)" >> "$resultfile"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
55
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
56 # pytest
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
57 if py.test; then
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
58 result=" OK"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
59 else
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
60 result="NOK"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
61 fi
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
62 echo "$result: $rev (pytest)" >> "$resultfile"
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
63
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
64 deactivate
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
65 echo
69f70de15f26 scripts: add developer script validate-commits
Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
parents:
diff changeset
66 done