Files
@ ba6418fde72f
Branch filter:
Location: kallithea/scripts/generate-ini.py - annotation
ba6418fde72f
1.9 KiB
text/x-python
git: more elegant handling of installed pre/post-receive hook failing on direct repo access
The hook would fail with a long backtrace when get_hook_environment raise an error exception.
Instead, as first thing in the entry point from the hook, catch that situation
and report it nicely before "quietly" skipping the hook:
[mk@here myrepo]$ git push
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 204 bytes | 204.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Skipping Kallithea Git post-recieve hook 'hooks/post-receive'.
remote: Git was apparently not invoked by Kallithea: Environment variable KALLITHEA_EXTRAS not found
To /tmp/somerepo
* [new branch] master -> master
[mk@here myrepo]$
We could be paranoid and let it (and the pre hook) fail ... but that doesn't
seem helpful.
Reported by Edmund Wong at [1].
[1] https://lists.sfconservancy.org/pipermail/kallithea-general/2019q4/003071.html
The hook would fail with a long backtrace when get_hook_environment raise an error exception.
Instead, as first thing in the entry point from the hook, catch that situation
and report it nicely before "quietly" skipping the hook:
[mk@here myrepo]$ git push
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 204 bytes | 204.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Skipping Kallithea Git post-recieve hook 'hooks/post-receive'.
remote: Git was apparently not invoked by Kallithea: Environment variable KALLITHEA_EXTRAS not found
To /tmp/somerepo
* [new branch] master -> master
[mk@here myrepo]$
We could be paranoid and let it (and the pre hook) fail ... but that doesn't
seem helpful.
Reported by Edmund Wong at [1].
[1] https://lists.sfconservancy.org/pipermail/kallithea-general/2019q4/003071.html
06d5c043e989 06d5c043e989 451b3f9d814e 06d5c043e989 06d5c043e989 a8e6bb9ee9ea a8e6bb9ee9ea 06d5c043e989 06d5c043e989 e3cce237d77c e3cce237d77c 0a277465fddf 06d5c043e989 06d5c043e989 06d5c043e989 06d5c043e989 06d5c043e989 06d5c043e989 06d5c043e989 06d5c043e989 fc6b1b0e1096 06d5c043e989 bbf7be28a11e 06d5c043e989 609d52bbf917 609d52bbf917 06d5c043e989 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 150173a027ee 06d5c043e989 06d5c043e989 06d5c043e989 06d5c043e989 06d5c043e989 06d5c043e989 06d5c043e989 94f6b23e52d0 a8e6bb9ee9ea 665dfa112f2c 06d5c043e989 06d5c043e989 06d5c043e989 a8e6bb9ee9ea 665dfa112f2c 06d5c043e989 06d5c043e989 d06039dc4ca2 a8e6bb9ee9ea 94f6b23e52d0 94f6b23e52d0 06d5c043e989 06d5c043e989 06d5c043e989 | #!/usr/bin/env python2
"""
Based on kallithea/lib/paster_commands/template.ini.mako, generate development.ini
"""
from __future__ import print_function
import re
from kallithea.lib import inifile
# files to be generated from the mako template
ini_files = [
('development.ini',
{
'[server:main]': {
'host': '0.0.0.0',
},
'[app:main]': {
'debug': 'true',
'app_instance_uuid': 'development-not-secret',
'session.secret': 'development-not-secret',
},
'[logger_root]': {
'handlers': 'console_color',
},
'[logger_routes]': {
'level': 'DEBUG',
},
'[logger_beaker]': {
'level': 'DEBUG',
},
'[logger_templates]': {
'level': 'INFO',
},
'[logger_kallithea]': {
'level': 'DEBUG',
},
'[logger_tg]': {
'level': 'DEBUG',
},
'[logger_gearbox]': {
'level': 'DEBUG',
},
'[logger_whoosh_indexer]': {
'level': 'DEBUG',
},
},
),
]
def main():
# make sure all mako lines starting with '#' (the '##' comments) are marked up as <text>
makofile = inifile.template_file
print('reading:', makofile)
mako_org = open(makofile).read()
mako_no_text_markup = re.sub(r'</?%text>', '', mako_org)
mako_marked_up = re.sub(r'\n(##.*)', r'\n<%text>\1</%text>', mako_no_text_markup, flags=re.MULTILINE)
if mako_marked_up != mako_org:
print('writing:', makofile)
open(makofile, 'w').write(mako_marked_up)
# create ini files
for fn, settings in ini_files:
print('updating:', fn)
inifile.create(fn, None, settings)
if __name__ == '__main__':
main()
|