1

我正在使用 Gitosis 来管理一组存储库。我遇到的问题是 Gitosis 没有记录哪个用户推送了特定的提交。我拥有的唯一信息是提交本身中的“作者”和“提交者”字段,这些可以由“推送者”设置为任何内容。

现在我意识到单个“推送”可以向 Gitosis 服务器发送很多很多提交,并且每个提交都是由个人开发人员创建的,所以我应该限制自己说我只对头部提交感兴趣被推送的分支。这个提交将(应该!)由创建发布的人创建,所以我想知道那是谁,所以如果有问题我可以去打败他们。

我的想法是在服务器上使用一个钩子将头部提交的 Committer 与 gitosis 用户名进行比较。如果他们都是“john.doe@example.com”,那么推送者就是提交者并且允许推送,否则被拒绝。这可行吗?我应该使用哪个钩子 - 我认为“更新”是一个,尽管预接收和后接收也是可能的。

我还考虑过使用 post-receive 挂钩来标记头部提交,让它将推送者的用户名放在带注释的标记消息中。这样做的问题是,查看提交的人不一定知道标签。

我愿意接受有关如何执行此操作的其他建议。基本思想是我想知道哪个 Gitosis 用户推送到了特定的分支。

如果我能找出是谁推送了标签(或将推送者限制为标签者),那就更好了!

凯文

4

1 回答 1

0

AFAIK gitosis 完全由 SSH 决定(通过公钥认证)谁可以访问 repo,谁不可以。从那里到 git-serve 实例,所有用户仅由“作者”和“提交者”字段标识。

无论如何只使用“作者”和“提交者”字段有什么问题?如果您担心有人欺骗他们,请使用两个存储库:“开发”和“发布”,并在 gitosis.conf 中使用更细粒度的访问控制方案,仅允许对特定密钥的“发布”进行写访问。

于 2011-06-15T09:07:16.480 回答