通过推送将数据传递给 gitolite-VREF
Pass data to gitolite-VREF via push
对于我现有的 gitolite3 安装,我想添加匿名访问,仅限于一定数量的存储库。所有这些存储库都应该允许读取,而写入操作应该受到保护。
为此,我考虑将令牌推送到 gitolite-repositories。 VREF 收到令牌并检查它是否有效。如果是,则允许对存储库进行写操作。 gitolite-conf 应如下所示:
repo @anonrepos
RW = @all
option deny-rules = 1
- VREF/MYTOKENREF = @all
(如果配置有错误,那是我从他们所在的电脑上复制错了)
对于我想到的 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()
引发了 EOFError。所以我不能通过标准输入而不是通过 sys.argv
将信息传递给 vref。
还是我错了?有什么方法可以将令牌传递给我的 vref,也许是通过一些 git-command-line-trickery?或者如果我确定背后的人是 legitimate,我是否可以通过其他方式允许匿名推送(实际上每个人都可以推送,所以我需要保护这些存储库)?我正在考虑将即将推送的提交的提交 ID 列入白名单,但这不是一种灵活的方法。
注意:别人push的流程应该是这样的:有人给我发消息说要push到仓库,我创建一个token发给他最后他使用提供的令牌成功推送到存储库。
另一种方法是定义一组您不填充的用户。
repo test-ldap-devel
RW+ = @devel
要确定用户是否在该开发组中(并授权推送),您编写一个程序,给定用户名,查询用户引用和 returns space 分隔用户所属的组列表。
然后将此程序的完整路径放入名为 GROUPLIST_PGM
的 rc
变量中,如下所示:
GROUPLIST_PGM => '/home/git/bin/ldap-query-groups',
这通常是在考虑 LDAP 引用的情况下完成的(如 in this example),但您可以使用任何其他引用。
这可以取代似乎难以传递的令牌概念。
你应该读一读精品手册。 Gitolite VREF 是 update
钩子的扩展,因此在命令行而不是通过标准输入获取它们的输入。
http://gitolite.com/gitolite/vref/#what-arguments-are-passed-to-the-vref-maker
对于我现有的 gitolite3 安装,我想添加匿名访问,仅限于一定数量的存储库。所有这些存储库都应该允许读取,而写入操作应该受到保护。
为此,我考虑将令牌推送到 gitolite-repositories。 VREF 收到令牌并检查它是否有效。如果是,则允许对存储库进行写操作。 gitolite-conf 应如下所示:
repo @anonrepos
RW = @all
option deny-rules = 1
- VREF/MYTOKENREF = @all
(如果配置有错误,那是我从他们所在的电脑上复制错了)
对于我想到的 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()
引发了 EOFError。所以我不能通过标准输入而不是通过 sys.argv
将信息传递给 vref。
还是我错了?有什么方法可以将令牌传递给我的 vref,也许是通过一些 git-command-line-trickery?或者如果我确定背后的人是 legitimate,我是否可以通过其他方式允许匿名推送(实际上每个人都可以推送,所以我需要保护这些存储库)?我正在考虑将即将推送的提交的提交 ID 列入白名单,但这不是一种灵活的方法。
注意:别人push的流程应该是这样的:有人给我发消息说要push到仓库,我创建一个token发给他最后他使用提供的令牌成功推送到存储库。
另一种方法是定义一组您不填充的用户。
repo test-ldap-devel
RW+ = @devel
要确定用户是否在该开发组中(并授权推送),您编写一个程序,给定用户名,查询用户引用和 returns space 分隔用户所属的组列表。
然后将此程序的完整路径放入名为 GROUPLIST_PGM
的 rc
变量中,如下所示:
GROUPLIST_PGM => '/home/git/bin/ldap-query-groups',
这通常是在考虑 LDAP 引用的情况下完成的(如 in this example),但您可以使用任何其他引用。
这可以取代似乎难以传递的令牌概念。
你应该读一读精品手册。 Gitolite VREF 是 update
钩子的扩展,因此在命令行而不是通过标准输入获取它们的输入。
http://gitolite.com/gitolite/vref/#what-arguments-are-passed-to-the-vref-maker