1

我想在我的 gitolite 安装中添加一个钩子,以便如果conf/gitolite.conf文件被推送并包含一个名称不符合我的命名约定的新存储库,则推送将失败。

这可以在不破解 gitolite 内部结构的情况下完成吗?

我正在使用 gitolite 1.5.4。

4

2 回答 2

3

另一方面,如果您谈论的是不信任管理员以正确的命名约定创建 repo 名称,那么您有多种解决方案和替代方案。

(1) 是否足以警告他以便他可以登录服务器、删除有问题的 repo 并再次修复配置?

如果是这样,请使用 PRE_CREATE 或 POST_CREATE 触发器(请参阅 gitolite 文档中的 triggers.html)。检查参数 2,对其进行测试,并在需要时打印一条嘈杂的消息。

(2) 如果警告不够,并且您需要彻底终止它,请使用 PRE_CREATE 触发器,除非它必须在 perl 中。使用 src/lib/Gitolite/Triggers/AutoCreate.pm 作为模型,除非你必须检查 $_[1] (第二个参数)。

(3) 您也是管理员,也许是“主要”管理员?如果是这样,请参阅委托(请参阅 gitolite 文档中的 deleg.html)。不过,这将有更多限制(例如,如果允许他添加密钥,他将简单地添加一个带有您的姓名的新密钥,从而绕过限制。

于 2012-12-23T17:38:33.613 回答
0

一、升级到最新的Gitolite(1.5.4是两年多了)

其次,Gitolite 的“内部”功能允许限制基于命名的 repo 的创建称为“wild repos”(“通配符 repos”),或“用户创建的 repos”

如果可用于Gitolite V2 或 G2(不确定 V1)和Gitolite V3 或 g3

wildrepos 功能允许您使用正则表达式模式指定访问控制规则,因此您可以通过配置文件中的一组规则来提供许多实际的 repos。
正则表达式模式还可以在其中包含单词 CREATOR,允许您参数化创建 repo 的用户的名称。

于 2012-09-26T05:49:34.690 回答