尽管不理想,但是我们的构建过程使远程git repo处于“不同步”状态几分钟,其中的源代码与提交给git的已编译代码/ DB模式转储不匹配。我们已经探索了防止这种情况的方法,但是在不久的将来不可能做到这一点。
我们想实现一个简单的git钩子,当任何开发人员在这种状态下撤下仓库时,都会向他们发出警告。只需检测一个或多个文件的存在即可完成。我们将如何实现一个在git merge
(进而也是git pull
)上运行的钩子,如果存储库中存在以下任何文件,则该钩子将停止合并并显示终端消息?
在一般情况下,没有一种方法可以实现无法使合并失败的钩子。有一个pre-merge-commit
钩子,但仅在合并不是快进时才适用。由于您的大多数开发人员都可能会将快进合并到他们的master
分支中,因此将没有执行此操作的方法。同样,您也可以使用钩子来中止结帐,以防万一。
您可以使用服务器端挂钩或CI检查来防止在这种不良状态下提交代码,或者可以在这种状态下使本地开发环境设置或构建脚本失败,作为替代。