我正在使用Gitosis来管理一组存储库。我遇到的问题是Gitosis没有维护哪个用户推送特定提交的记录。我所拥有的唯一信息是提交本身中的“作者”和“提交者”字段,这些字段可以通过“推送器”设置为任何内容。
现在我意识到单个“推送”可以向Gitosis服务器发送许多提交,并且每个提交都是由个体开发者创建的,所以我应该限制自己说我只对它感兴趣在推动的分支上提交头。这个提交将(应该!)由创建发布的人创建,所以我想知道是谁,如果有问题我可以打败他们。
我的想法是使用服务器上的钩子将头部提交的提交者与gitosis用户名进行比较。如果它们都是“john.doe@example.com”,则推送器是提交者并且允许推送,否则它被拒绝。这可行吗?我应该使用哪个钩子 - 我认为“更新”是一个,但预接收和后接收也是可能的。
我还考虑过使用post-receive hook来标记head commit,让它将pusher的用户名放在带注释的标记消息中。这样做的问题是,查看提交的人不一定会知道标记。
我愿意接受有关如何执行此操作的其他建议。基本的想法是,我想知道哪个Gitosis用户推送到特定分支。
如果我能找出谁推了一个标签(或限制推动器成为标签器),那就更好了!
凯文
答案 0 :(得分:0)
AFAIK gitosis完全由SSH完成,以确定(通过公钥认证)谁可以访问回购,谁不允许。从那里到git-serve实例,所有用户仅由“作者”和“提交者”字段标识。
仅使用“作者”和“提交者”字段有什么问题?如果你担心人们会欺骗他们,请使用两个存储库:'development'和'release',并在gitosis.conf中使用更细粒度的访问控制方案,只允许对特定键的'release'进行写访问。