Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过推送将数据传递给gitolite VREF_Git_Gitolite - Fatal编程技术网

通过推送将数据传递给gitolite VREF

通过推送将数据传递给gitolite VREF,git,gitolite,Git,Gitolite,对于我现有的gitolite3安装,我想添加匿名访问,限制在一定数量的存储库中。所有这些存储库都应该允许读取,而写入操作应该受到保护 为此,我考虑将一个令牌推送到gitolite存储库。VREF接收令牌并检查其是否有效。如果是,则允许对存储库执行写操作。gitolite配置应如下所示: repo @anonrepos RW = @all option deny-rules = 1 - VREF/MYTOKENREF = @all (如果配置包含错误,则我从它们所在的p

对于我现有的gitolite3安装,我想添加匿名访问,限制在一定数量的存储库中。所有这些存储库都应该允许读取,而写入操作应该受到保护

为此,我考虑将一个令牌推送到gitolite存储库。VREF接收令牌并检查其是否有效。如果是,则允许对存储库执行写操作。gitolite配置应如下所示:

repo @anonrepos
    RW = @all

    option deny-rules = 1
    - VREF/MYTOKENREF = @all
(如果配置包含错误,则我从它们所在的pc上复制了错误的配置)
对于vref,我想到:

#!/usr/bin/python3

token = input()
if is_valid(token): # TODO: define is_valid
    exit(0) # Allow the push
else:
    exit(1) # Deny it
理论到此为止。当我尝试推送时,我得到一个错误,因为pythons
input()
会引发EOR。因此,我不能通过stdin将信息传递给vref,也不能通过
sys.argv
传递信息

还是我错了?是否有某种方法可以将令牌传递给我的vref,或者通过一些git命令行技巧?或者,如果我确信背后的人是合法的,是否有其他方法可以允许匿名推送(实际上每个人都可以推送,所以我需要保护这些存储库)?我在考虑将要推送的提交的提交id白名单,但这不是一种灵活的方法


注意:推送的过程应该与他的过程类似:有人向我发送消息说他想推送到存储库,我创建一个令牌并发送给他,最后他使用提供的令牌成功地推送到存储库。

另一种方法是定义一组您不填充的用户

repo test-ldap-devel
    RW+    =    @devel
要确定某个用户是否在该devel组中(并授权推送),您需要编写一个程序,在给定用户名的情况下,该程序查询用户引用并返回该用户所属的组的空格分隔列表。
然后将该程序的完整路径放入名为
GROUPLIST\u PGM
的变量中,如下所示:

GROUPLIST_PGM           =>  '/home/git/bin/ldap-query-groups',
这通常是在考虑LDAP引用(as)的情况下完成的,但您可以使用任何其他引用


这可能会取代代币的概念,因为代币似乎很难传递。

您应该阅读精美手册。Gitolite VREFs是
update
hooks的扩展,因此在命令行上接受它们的输入,而不是通过stdin


这种东西的一般规则是“通过环境变量传递”。我不知道如何特别使用gitolite来设置它。@torek这是个好主意,虽然我想让推送尽可能容易,并且在windows系统上传递环境变量并不容易。Hanks,我会看看它并尝试让它工作。我还没有试过,我还有其他事情要做。但我同意使用LDAP是一条可行之路。我会按照你的建议做其他事情,但我会将你标记为答案,直到我创建了一个描述我所做的事情的答案。@Sirac当然,我会支持你的答案(只需将我的答案保持为“选中”)