def setCommitEmailHook(reponame, enable): prepare(reponame) reposdir = repository.directory('git', reponame) hook_dir = reposdir + 'hooks' + 'post-receive.d' mkdirs(hook_dir) hook_dest = hook_dir + '001-commit-email.hook' if enable: variables = { 'submin_lib_dir': options.lib_path(), 'base_url': options.url_path('base_url_submin'), 'http_vhost': options.http_vhost(), 'hook_version': HOOK_VERSIONS['commit-email'], } hook = evaluate('plugins/vcs/git/post-receive', variables) try: os.unlink(hook_dest) except OSError as e: if e.errno != errno.ENOENT: raise try: with file(hook_dest, 'w') as f: f.write(hook) os.chmod(hook_dest, 0o755) except OSError as e: raise repository.PermissionError("Enabling hook failed: %s" % (str(e), )) try: cfg = repository.directory('git', reponame) + 'config' email = options.value( 'commit_email_from', 'Please configure commit_email_from <*****@*****.**>') set_git_config(cfg, 'multimailhook.emailmaxlines', '2000') prefix = '[%s]' % reponame set_git_config(cfg, 'multimailhook.emailprefix', prefix) set_git_config(cfg, 'multimailhook.envelopesender', email) except SetGitConfigError as e: raise repository.PermissionError( "Enabling hook succeeded, but configuring it failed: %s" % (str(e))) else: try: os.unlink(hook_dest) except OSError as e: if e.errno != errno.ENOENT: raise repository.PermissionError("Removing hook failed: %s" % (str(e), ))
def setTracSyncHook(reponame, enable): prepare(reponame) hook_dir = repository.directory('git', reponame) + 'hooks' hook = hook_dir + 'post-receive.d' + '002-trac-sync.hook' try: os.unlink(hook) except OSError as e: if e.errno != errno.ENOENT: raise repository.PermissionError( "Removing trac-sync hook failed: %s" % (str(e), )) if not enable: return variables = { 'submin_env': str(options.env_path()), 'repository': reponame, 'hook_version': HOOK_VERSIONS['trac-sync'], } contents = evaluate('plugins/vcs/git/trac-sync', variables) with file(hook, 'w') as f: f.writelines(contents) os.chmod(hook, 0o755)