svn_post_commit_hook.py.tmpl
59 lines
| 1.5 KiB
| application/x-cheetah
|
CheetahLexer
r407 | #!_ENV_ | |||
import os | ||||
import sys | ||||
path_adjust = [_PATH_] | ||||
if path_adjust: | ||||
sys.path = path_adjust | ||||
r1261 | # special trick to pass in some information from rc to hooks | |||
# mod_dav strips ALL env vars and we can't even access things like PATH | ||||
for env_k, env_v in _OS_EXPAND_: | ||||
os.environ[env_k] = env_v | ||||
r407 | try: | |||
from vcsserver import hooks | ||||
except ImportError: | ||||
if os.environ.get('RC_DEBUG_SVN_HOOK'): | ||||
import traceback | ||||
r1077 | print(traceback.format_exc()) | |||
r407 | hooks = None | |||
# TIMESTAMP: _DATE_ | ||||
RC_HOOK_VER = '_TMPL_' | ||||
r1266 | # special trick to pass in some information from rc to hooks | |||
# mod_dav strips ALL env vars and we can't even access things like PATH | ||||
for env_k, env_v in _OS_EXPAND_: | ||||
os.environ[env_k] = env_v | ||||
r407 | def main(): | |||
if hooks is None: | ||||
# exit with success if we cannot import vcsserver.hooks !! | ||||
# this allows simply push to this repo even without rhodecode | ||||
sys.exit(0) | ||||
r435 | if os.environ.get('RC_SKIP_HOOKS') or os.environ.get('RC_SKIP_SVN_HOOKS'): | |||
r407 | sys.exit(0) | |||
r1261 | cwd_repo_path = os.getcwd() | |||
r407 | push_data = sys.argv[1:] | |||
os.environ['RC_HOOK_VER'] = RC_HOOK_VER | ||||
try: | ||||
r1261 | result = hooks.svn_post_commit(cwd_repo_path, push_data, os.environ) | |||
r407 | sys.exit(result) | |||
except Exception as error: | ||||
# TODO: johbo: Improve handling of this special case | ||||
if not getattr(error, '_vcs_kind', None) == 'repo_locked': | ||||
raise | ||||
r1077 | print(f'ERROR: {error}') | |||
r407 | sys.exit(1) | |||
sys.exit(0) | ||||
if __name__ == '__main__': | ||||
main() | ||||