在mercurial hook中获取经过身份验证的用户

时间:2013-07-16 14:12:58

标签: python apache mercurial hook mercurial-hook

我有一个Apache httpd + mod_wsgi + Mercurial设置,我希望在钩子中获得经过身份验证的用户,特别是pretxnchangegroup钩子。我已经阅读(很可能是错误的)os.environ['REMOTE_USER']应该包含该信息,但看起来不像。

我目前有一个扩展程序,可将os.environ打印到stderr

import sys
import os

def pretxnchangegroup_hook(ui, repo, **kwargs):
    print >> sys.stderr, 'pretxnchangegroup activated'
    print >> sys.stderr, os.environ

def reposetup(ui, repo):
    ui.setconfig('hooks', 'incoming.accesscontrol', pretxnchangegroup_hook)

使用hg -v push此代码输出:

remote: calling hook incoming.accesscontrol: <function pretxnchangegroup_hook at 0x7f8310221230>
remote: pretxnchangegroup activated
remote: {'LANG': 'C', 'TERM': 'xterm', 'SHLVL': '2', 'PWD': '/', 'PATH': '/sbin:/usr/sbin:/bin:/usr/bin', '_': '/usr/sbin/httpd'}

1 个答案:

答案 0 :(得分:3)

好的,我希望这会帮助除了我之外的任何人,因为我无法在其他任何地方找到这个。

REMOTE_USER地图上可以访问经过身份验证的用户(repo.ui.environ)和许多其他信息,其中repo是传递给挂钩的参数。

我想这张地图与mod_cgi下的os.environ中的地图相同。