【问题标题】:Git hook to detect if fetched repo contains file and stop mergeGit钩子检测获取的repo是否包含文件并停止合并
【发布时间】:2020-02-19 22:51:07
【问题描述】:

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

我们想实现一个简单的 git 钩子,当任何开发人员在此状态下拉下 repo 时,它会警告他们。它可以简单地通过检测一个或多个文件的存在来完成。我们如何实现一个在 git merge(以及 git pull)上运行的钩子,如果 repo 中存在这些文件中的任何一个,它将停止合并并打印终端消息?

【问题讨论】:

    标签: git git-merge githooks


    【解决方案1】:

    没有办法实现在一般情况下合并失败的钩子。有一个pre-merge-commit 钩子,但这仅适用于合并不是快进的情况。由于您的大多数开发人员可能会在他们的master 分支中进行快进合并,因此没有办法执行此操作。同样没有任何钩子可以用来中止结帐,以防万一。

    您可以使用服务器端挂钩或 CI 检查来防止在这种不良状态下提交代码,或者您可以让本地开发环境设置或构建脚本在这种状态下失败。

    【讨论】:

    • 谢谢。是的,合并几乎总是快进的。糟糕的状态是“故意的”,因为 CI 然后运行剩余的步骤来更新构建工件并将它们推送到存储库,因此阻止提交代码遗憾地不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多