2016-11-29 114 views
1

我们假设我有一个post-merge脚本,该脚本也存储在存储库中的其他位置。我想挂钩升级到最新版本。git钩子可以覆盖自己吗?

为什么?这背后的主要原因是钩子脚本也可以通过单次推送进行部署,而无需访问多台服务器并在每台服务器上手动部署代码。钩子脚本依赖于可能会改变的db模式。

在这种情况下,锁在.git/hooks/post-merge,所以它不能被简单的方式覆盖。

如果我用另一种钩来更新脚本,如pre-merge,它会成功,但pre-merge不知道最新的post-merge脚本但在这一点上,这将是一个承诺的背后。

这个问题的任何想法?

回答

1

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

在脚本结束时,打开一个将执行覆盖作业的独立进程。通过它的PID为post-merge,所以它可以连续检查脚本是否仍在运行。如果不是,则将脚本更新为最新版本并退出。