gpt4 book ai didi

Git全局钩子(Hook)定制

转载 作者:太空狗 更新时间:2023-10-29 13:14:55 25 4
gpt4 key购买 nike

我计划编写一些 git 钩子(Hook)作为一个项目,将用户的操作记录在数据库中。然后可以使用该数据库查询他的所有事件。我尝试记录的操作是

  • promise
  • pull
  • 推送
  • merge
  • 分支机构

我想把它打包成可以通过包管理器安装的发行版。Git 通过在 $PREFIX/share/templates/hooks

中放置任何此类来允许全局 Hook

它目前有一些被禁用的钩子(Hook)(.sample 附加到它们的名称)。当一个新的仓库被创建时,这些钩子(Hook)被复制到仓库的 .git 文件夹中

现在,如果用户安装这些 Hook 的包,并且像 post-commitpost-update 这样的 Hook 已经启用。在这种情况下,脚本文件将被覆盖!这听起来很糟糕

这意味着 git 每个操作只有一个钩子(Hook)文件。如果我需要为一个 Action 保留三个钩子(Hook),那就意味着这是不可能的。这意味着从包管理器自动安装会引入冲突。

现在认为我们打包了钩子(Hook)来覆盖默认启用的文件。如果用户想向这些文件添加更多操作,然后决定卸载我的包,那么他的自定义命令也会消失吗?

我认为 git 在这方面非常聪明,但我错了:(

需要有一个名为 post-commitpost-update 的文件夹或任何操作,git 应该在该文件夹内运行所有脚本。我仍在寻找处理当前情况的方法。

最佳答案

为什么不写一个 post-commit Hook (例如)来查找“post-commit-hooks”子目录并列出并执行在其中找到的所有脚本?
(第一个未成功运行的将导致所有提交后 Hook 失败)

如果用户初始化他们的 Git repo from a predefined template directory ,然后您可以确保他们都在他们的新存储库中获得这些特殊脚本。

关于Git全局钩子(Hook)定制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4172430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com