【发布时间】:2016-10-27 04:19:13
【问题描述】:
我希望用 Python 编写一个 pre-receive gitook。我的理解是,没有参数被传递到pre-receive 脚本中,而是使用标准输入在单独的行中传递每个引用。我已经能够通过以下方式阅读参考更改:
!/usr/bin/env python
import sys
import fileinput
for line in fileinput.input():
print "pre-receive: Trying to push ref: %s" % line
但是,对于这个钩子,我主要关心的是确保推送代码的用户具有正确的权限来推送到他们尝试的分支。通过我的研究,我一直无法找到一种方法来寻找提交者的用户凭据。我的目标是将他们的信誉与白名单进行比较,以便授予访问权限。
如何更改我的pre-receive 代码以验证提交用户并验证他们是否被列入白名单以推送到他们尝试的分支?如果有的话,我必须对 git 存储库进行哪些更改才能使代码正常运行?
【问题讨论】:
-
这对 Python 部分没有帮助,但 Gitolite(主要是 Perl)依赖于 ssh:你强制用户以
git@host.dom.ain的身份登录并使用 AuthorizedKeys 设置来运行代理命令。请参阅 sshd 文档和SSH_ORIGINAL_COMMAND和 gitolite.com/gitolite/how.html(请注意,此处将用户名作为参数传递)。
标签: python git authentication githooks