我目前正在寻找将现有的SVN存储库转换为git,然后在允许推送之前使用Reviewboard进行评论。我最近才开始使用git并且远非专家,但是我想做的是有一个预推钩,它运行“post-review”以将更改提交给ReviewBoard。我有一个钩子工作,将执行此操作,但看起来这不会自动传播到存储库的克隆。阅读它听起来似乎没有这样做是为了防止在用户上强制执行可执行代码,但这是一个仅限内部的存储库,我们希望强制执行此操作以及其他一些策略。有没有办法强制git将钩子传播到远程克隆,还是我们需要指示我们的开发人员运行将这些钩子放在本地存储库中的东西?
答案 0 :(得分:8)
Git没有内置支持在克隆之间传输挂钩,可选或其他方式。它具有可以修改或添加到新存储库的默认模板,但这些模板是从本地文件系统(或网络文件系统,视情况而定)中提取的。您可以检测系统以复制它们,或者将钩子本身放入存储库并要求开发人员正确配置其克隆。
当推送发生但更新ref之前,也可能在中央裸存储库上运行所需的挂钩。这可以通过预接收或更新挂钩来完成。这是否可接受取决于此挂钩的实际功能,这在您的帖子中不明确。
阅读http://www.reviewboard.org/docs/manual/dev/faq/听起来好像你应该鼓励你的开发者使用主题分支。批准更改后,可以将它们合并到发布分支中。您可以拥有一个更新挂钩,它只允许从特权用户或任何其他条件推送到特定分支。这也可以使用Gitolite完成,您可以在http://progit.org/book/ch4-8.html
阅读如果您未承诺使用Reviewboard,您可以考虑将http://code.google.com/p/gerrit/与Git更好地集成,并明确支持此工作流程