Git钩子,用于检测获取的回购是否包含文件并停止合并

Git钩子,用于检测获取的回购是否包含文件并停止合并,git,git-merge,githooks,Git,Git Merge,Githooks,虽然不理想,但我们的构建过程会让远程git repo在几分钟内处于“不同步”状态,其中源代码与提交给git的已编译代码/DB模式转储不匹配。我们已经探索了防止这种情况的方法,但在不久的将来不可能做到 我们想实现一个简单的git钩子,当任何开发人员在这种状态下撤销回购协议时,它会发出警告。只需检测一个或多个文件的存在即可。我们如何实现在git merge上运行的钩子(从而也实现了git pull),如果repo中存在这些文件,钩子将停止合并并打印终端消息?在一般情况下,没有办法实现无法合并的钩子。

虽然不理想,但我们的构建过程会让远程git repo在几分钟内处于“不同步”状态,其中源代码与提交给git的已编译代码/DB模式转储不匹配。我们已经探索了防止这种情况的方法,但在不久的将来不可能做到


我们想实现一个简单的git钩子,当任何开发人员在这种状态下撤销回购协议时,它会发出警告。只需检测一个或多个文件的存在即可。我们如何实现在
git merge
上运行的钩子(从而也实现了
git pull
),如果repo中存在这些文件,钩子将停止合并并打印终端消息?

在一般情况下,没有办法实现无法合并的钩子。有一个
pre-merge-commit
hook,但它仅适用于合并不是快进的情况。由于您的大多数开发人员可能会在其
master
分支中进行快进合并,因此没有执行此操作的方法。同样,如果您考虑到这一点,也没有可以用来中止签出的钩子


您可以使用服务器端钩子或CI检查来防止在此错误状态下提交代码,或者您也可以使本地开发环境设置或生成脚本在此状态下失败作为替代方法。

谢谢。是的,合并几乎总是快进的。坏的状态是“故意”的,因为CI然后运行剩余的步骤来更新构建工件,并将它们推送到repo,所以很遗憾,阻止提交代码是行不通的。