【问题标题】:Setting pre-commit-hook server side设置 pre-commit-hook 服务器端
【发布时间】:2017-11-08 14:52:04
【问题描述】:

是否可以在服务器 repo 中设置 pre-commit-hooks 并在 repo 被克隆时将它们下载到客户端?

【问题讨论】:

  • 您可以设置一个pre-receive服务器端挂钩、一个update服务器端挂钩和一个post-receive服务器端挂钩。有关更多信息,请阅读git-scm.com/book/gr/v2/Customizing-Git-Git-Hooks“克隆存储库时下载到客户端”是什么意思?
  • @Philj0 我认为它的意思是“我想以编程方式强制我的存储库的所有克隆都使用这组预提交挂钩。”
  • 我猜服务器端钩子的特点是,您不必将它分享给克隆您的存储库的每个人:D 但是如果您必须这样做,请查看来自@的答案桑福德
  • 我的意思是,作为一个团队,我们希望挂钩与服务器上的 repo 一起使用,在这种情况下,我们希望分发 pre-commit-hook,它基本上格式化代码,让你知道它是否成功。我们希望避免由于格式问题引起的冲突,例如。空格与制表符之类的
  • 所以我想与他人分享钩子的唯一方法是@msanford 在这个答案中向您展示的方式。无法在服务器端进行预提交。

标签: git server-side pre-commit-hook


【解决方案1】:

来自git-scm

这些钩子都存储在 Git 目录的 hooks 子目录中。在大多数项目中,这是.git/hooks

回想一下,.git/ 是在本地管理的。

所以,不,没有编程方式仅使用 git 来强制一个存储库在克隆时安装钩子。

也就是说,一种常见的做法是将挂钩捆绑到您的存储库中的 hooks/ 之类的文件夹中,然后

  • 在自述文件中说明如何安装它们,或者
  • 提供一个脚本,在克隆后安装它们,用户必须手动运行。

如果您有想要验证的规则,如果有人使用了钩子,您可以使用这些规则进行烟雾测试,您可以在遥控器中安装 pre-receive 钩子。

例如,如果您有一个预提交钩子,该钩子在提交消息之前添加了一个分支标识符,您可以签入一个提交消息以分支标识符开头的预接收钩子(实际上是在“服务器”上)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2012-02-01
    相关资源
    最近更新 更多