git钩子有可能覆盖自己吗?

时间:2016-11-29 15:46:54

标签: git

假设我有一个post-merge脚本,它也存储在存储库中的其他位置。我希望钩子能够升级到最新版本。

为什么呢?这背后的主要原因是,只需一次推送就可以部署钩子脚本,而无需访问多个服务器并在每台服务器上手动部署代码。 Hook脚本依赖于db模式,可能会发生变化。

在这种情况下,锁定会放在.git/hooks/post-merge上,因此无法轻易覆盖。

如果我使用另一个钩子来更新脚本,例如pre-merge,它会成功,但pre-merge还不知道最新的post-merge脚本,那时它会是一个承诺。

对这个问题有任何想法吗?

1 个答案:

答案 0 :(得分:1)

好。找到了可能的治疗方法

在脚本结束时,打开一个将执行覆盖作业的独立进程。将它传递给post-merge的PID,以便它可以不断检查post-merge脚本是否仍在运行。如果没有,它会将脚本更新为最新版本并退出。