gpt4 book ai didi

git - 检查 pull 请求是否与目标分支保持同步

转载 作者:IT王子 更新时间:2023-10-29 01:03:33 27 4
gpt4 key购买 nike

我们的项目正在使用 protected 分支,并且需要 PR 的基础分支与目标分支保持同步才能 merge 。我们还使用 Jenkins 构建 PR 的未 merge 头部,因为我们使用的插件会在目标分支更改时自动重建所有打开的 PR,这会很快堵塞管道。因此,如果打开 PR 而未与目标分支保持最新状态,我们希望能够立即停止 Jenkins 管道并通知提交者他们需要先 merge 。

因此,使用 GitHub API,我希望能够判断 pull 请求是否与目标分支保持同步。与此最接近的似乎是 pull 请求中的“可 merge ”属性,但看起来它只指示是否可以完成安全的自动 merge ,而不是分支是否已经是最新的。

有直接的API json标签可以看吗?如果没有,是否有一种简单的方法可以使用 git 命令手动检查?

最佳答案

我不知道 GitHub 是否通过他们的 API 公开了这些信息,但您可以使用 Git 命令手动检测到这一点。您想要找到所谓的 merge 基础,并确保此提交与 master(或您的主分支是什么)的提示相同。

的形式脚本,它看起来像这样:

if [ $(git merge-base @ master) == $(git rev-parse master) ]
then
echo "Your branch is up to date."
exit 0
else
echo "You need to merge / rebase."
exit 1
fi

如果您将此脚本作为构建步骤包含在内,则退出值应该会导致 Jenkins 在必要时使作业失败。

Dmitry's answer 中所述,对于较新版本的 Git,您可以使用 --is-ancestor 标志为 git merge-base 将其简化为一个命令。脚本将如下所示:

if git merge-base --is-ancestor master @
then
echo "Your branch is up to date."
exit 0
else
echo "You need to merge / rebase."
exit 1
fi

关于git - 检查 pull 请求是否与目标分支保持同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39395684/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com