我想在我的gitolite安装中添加一个钩子,这样如果推送conf/gitolite.conf
文件并包含一个名称不符合我的命名约定的新存储库,则推送将失败。
这可以在不破坏gitolite内部的情况下完成吗?
我正在使用gitolite 1.5.4。
答案 0 :(得分:3)
另一方面,如果您正在谈论不信任 admin 以使用正确的命名约定创建回购名称,那么您有多种解决方案和替代方案。
(1)是否足以警告他,以便他可以登录到服务器,删除有问题的回购,并再次修复配置?
如果是这样,请使用PRE_CREATE或POST_CREATE触发器(请参阅gitolite docs中的triggers.html)。检查参数2,测试它,并在需要时打印出嘈杂的消息。
(2)如果警告不充分,并且您需要彻底终止它,请使用PRE_CREATE触发器,除非它必须在perl中。使用src / lib / Gitolite / Triggers / AutoCreate.pm作为模型,除了你必须检查$ _ [1](第二个参数)。
(3)你是管理员,也许是"主要"一?如果是,请参阅委托(请参阅gitolite文档中的deleg.html)。这会有更多限制(例如,如果允许他添加密钥,他只需添加一个带有您的名称的新密钥,从而绕过限制。
答案 1 :(得分:0)
首先,升级到最新的Gitolite(两年多前是1.5.4)
其次,Gitolite的“内部”功能允许限制基于命名的回购的创建被称为“野生回购”(“通配回购”),或“用户创建的回购”
如果Gitolite V2 or G2(不确定V1)和Gitolite V3 or g3可用。
wildrepos功能允许您使用正则表达式模式指定访问控制规则,因此您可以通过配置文件中的一组规则为许多实际的repos提供服务。
正则表达式模式中还可以包含CREATOR一词,允许您参数化创建回购的用户名。