代码之家  ›  专栏  ›  技术社区  ›  Manish Sinha

Git全局挂钩自定义

  •  6
  • Manish Sinha  · 技术社区  · 14 年前

    我计划编写一些Git钩子作为一个项目,将用户的操作记录在数据库中。然后可以使用此数据库查询他的所有活动。我要记录的操作是

    • 犯罪
    • 合并
    • 分支

    我想把这个打包在发行版中,可以通过包管理器安装。 Git允许通过在 $PREFIX/share/templates/hooks

    它当前有一些已禁用的挂钩( .sample 附加在他们的名字之后)。创建新存储库时,这些挂钩将复制到 .git 存储库的文件夹

    现在,如果用户安装这些钩子和钩子的包 post-commit post-update 已启用。在这种情况下,脚本文件将被覆盖!这听起来糟透了

    这意味着Git每个操作只有一个钩子文件。如果我需要一个动作留三个钩子,这意味着这是不可能的。这意味着从包管理器自动安装可能会导致冲突。

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

    我认为吉特在这方面很聪明,我错了:(

    需要一个名为的文件夹 后提交 更新后 或者任何操作和Git都应该运行该文件夹中的所有脚本。我仍在寻找一种应对当前形势的方法。

    1 回复  |  直到 14 年前
        1
  •  3
  •   VonC    14 年前

    为什么不编写一个提交后挂钩(例如)来查找“提交后挂钩”子目录,并列出和执行其中找到的所有脚本?
    (第一个未成功运行的将使所有提交后挂钩失败)

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