【问题标题】:Enabling github pre commit hooks in origin for all collaborators为所有协作者启用 github pre commit hooks in origin
【发布时间】:2017-03-30 22:53:15
【问题描述】:

首先:我们在团队中为一些项目使用 github 存储库。 我在本地使用预提交挂钩目录中定义的脚本(非常适合我的提交)。

我需要让每个用户(合作者)使用这些钩子而不使用符号链接或要求他们将它们放在他们的主文件夹中。

有没有办法设置它们,如果脚本不退出 0,用户就无法提交?

谢谢。

【问题讨论】:

  • 您可能正在寻找pre-receive 钩子。
  • 谢谢!这就是我从服务器端需要的更多。我会检查一下如何使脚本适应它。

标签: github


【解决方案1】:

正如 Henrik 所暗示的,在企业版中,存在诸如预接收挂钩之类的东西。它在服务器端运行,因此您无需将其安装在每个协作者的本地计算机上。但是您实际使用的是 github.com,他们不允许 pre receive hooks ,我也不希望他们计划这样做;允许个人在他们的服务器上运行脚本不太可能在他们的商业计划中。因此,除非您能够使用企业产品,否则这可能对您没有帮助

不过,您确实有一些补救措施,但并不等同。例如,您可以设置一个受保护的分支。因此,您可以使其只有您可以签入该分支,并且您当然会使用本地挂钩,其他每个人都将使用拉取请求。

此外,您可以查看 LGTM(对我来说看起来不错)或类似的自动拉取请求批准系统。我不相信官方服务器已经启动,但源代码在那里并且可以由其他人运行。 LGTM 允许您设置许多不同的条件,这些条件更接近于您的术前挂钩。

设置这样的系统可能比您付出的努力更多,这是可以理解的;但它是可行的。

使用 git 附带的 pre-commit 钩子的主要问题是它们在你的存储库中是本地的,不会被推送到 github.com。我相信在幕后,这些钩子甚至没有转移到 github 上的 repo,并且 pre-commit 钩子目录本身不可用,就像它在 git repo 的本地副本上一样。

(关于预提交钩子目录的架构,除了 A 之外,我会说更多。我不确定 NDA 和 B 是否涵盖了它。我只看到了它在企业产品上的方式,而不是实际的 github,和C.不知道结构是不是还是一模一样)

【讨论】:

  • 谢谢!在我的测试环境中,我只使用 github,但在我最终需要使用这些钩子的地方,我们使用了企业。我无法访问那里的原点,因此如果需要,我必须调整脚本并将它们传递给管理 github 主机和存储库的团队。这些脚本非常简单,主要的脚本必须在 bash 中退出 0 并在 python 中使用另外 2 个脚本来检查 json 验证和其他检查文件是否对 sensu 配置有效。我想我只需要让他们把它们放在:$GIT_DIR/hooks/pre-receive 就像这里解释的一样:git-scm.com/docs/git-receive-pack
猜你喜欢
  • 2020-05-21
  • 1970-01-01
  • 2011-05-18
  • 1970-01-01
  • 2011-08-11
  • 2023-01-24
  • 1970-01-01
  • 1970-01-01
  • 2018-02-26
相关资源
最近更新 更多