|
|
#!_ENV_
|
|
|
|
|
|
import os
|
|
|
import sys
|
|
|
path_adjust = [_PATH_]
|
|
|
|
|
|
if path_adjust:
|
|
|
sys.path = path_adjust
|
|
|
|
|
|
# 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
|
|
|
|
|
|
try:
|
|
|
from vcsserver import hooks
|
|
|
except ImportError:
|
|
|
if os.environ.get('RC_DEBUG_SVN_HOOK'):
|
|
|
import traceback
|
|
|
print(traceback.format_exc())
|
|
|
hooks = None
|
|
|
|
|
|
|
|
|
# TIMESTAMP: _DATE_
|
|
|
RC_HOOK_VER = '_TMPL_'
|
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
|
def main():
|
|
|
if os.environ.get('SSH_READ_ONLY') == '1':
|
|
|
sys.stderr.write('Only read-only access is allowed')
|
|
|
sys.exit(1)
|
|
|
|
|
|
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)
|
|
|
|
|
|
if os.environ.get('RC_SKIP_HOOKS') or os.environ.get('RC_SKIP_SVN_HOOKS'):
|
|
|
sys.exit(0)
|
|
|
cwd_repo_path = os.getcwd()
|
|
|
push_data = sys.argv[1:]
|
|
|
|
|
|
os.environ['RC_HOOK_VER'] = RC_HOOK_VER
|
|
|
try:
|
|
|
result = hooks.svn_pre_commit(cwd_repo_path, push_data, os.environ)
|
|
|
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
|
|
|
print(f'ERROR: {error}')
|
|
|
sys.exit(1)
|
|
|
sys.exit(0)
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
main()
|
|
|
|