我打算编写一些 git 钩子作为一个项目,将用户的操作记录在数据库中。然后可以使用该数据库查询他的所有活动。我要记录的操作是
- 犯罪
- 拉
- 推
- 合并
- 分支
我想把它打包在可以通过包管理器安装的发行版中。Git 允许通过在其中放置任何这样的全局钩子$PREFIX/share/templates/hooks
它目前有一些被禁用的钩子(.sample
附加到它们的名称后)。创建新存储库时,会将这些挂钩复制.git
到存储库的文件夹中
现在,如果用户安装了这些钩子和钩子的软件包,post-commit
并且post-update
已经启用。在这种情况下,脚本文件将被覆盖!这听起来很糟糕
这意味着 git 每个操作只有一个挂钩文件。如果我需要为一个动作保留三个钩子,这意味着它是不可能的。这意味着从包管理器自动安装可能会引入冲突。
现在想想我们打包了钩子来覆盖默认启用的文件。如果用户想在这些文件中添加更多操作,然后决定卸载我的包,那么他的自定义命令也会消失吗?
我认为 git 在这方面非常聪明,但我错了:(
需要有一个名为post-commit
andpost-update
或任何操作的文件夹,并且 git 应该运行该文件夹内的所有脚本。我仍在寻找一种方法来处理当前的情况。