diff --git a/vcsserver/hooks.py b/vcsserver/hooks.py --- a/vcsserver/hooks.py +++ b/vcsserver/hooks.py @@ -765,8 +765,9 @@ def svn_pre_commit(repo_path, commit_dat else: # fallback method to read from TXN-ID stored data extras = _get_extras_from_txn_id(path, txn_id) - if not extras: - return 0 + + if not extras: + raise ValueError('Failed to extract context data called extras for hook execution') extras['hook_type'] = 'pre_commit' extras['commit_ids'] = [txn_id] @@ -804,8 +805,9 @@ def svn_post_commit(repo_path, commit_da else: # fallback method to read from TXN-ID stored data extras = _get_extras_from_commit_id(commit_id, path) - if not extras: - return 0 + + if not extras: + raise ValueError('Failed to extract context data called extras for hook execution') extras['hook_type'] = 'post_commit' extras['commit_ids'] = [commit_id] diff --git a/vcsserver/lib/config_utils.py b/vcsserver/lib/config_utils.py new file mode 100644 --- /dev/null +++ b/vcsserver/lib/config_utils.py @@ -0,0 +1,40 @@ +# Copyright (C) 2010-2023 RhodeCode GmbH +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License, version 3 +# (only), as published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +# This program is dual-licensed. If you wish to learn more about the +# RhodeCode Enterprise Edition, including its added features, Support services, +# and proprietary license terms, please see https://rhodecode.com/licenses/ +import os + + +def get_config(ini_path, **kwargs): + import configparser + parser = configparser.ConfigParser(**kwargs) + parser.read(ini_path) + return parser + + +def get_app_config_lightweight(ini_path): + parser = get_config(ini_path) + parser.set('app:main', 'here', os.getcwd()) + parser.set('app:main', '__file__', ini_path) + return dict(parser.items('app:main')) + + +def get_app_config(ini_path): + """ + This loads the app context and provides a heavy type iniliaziation of config + """ + from paste.deploy.loadwsgi import appconfig + return appconfig(f'config:{ini_path}', relative_to=os.getcwd())