如何使用配置或某些脚本自动处理git push到DEV分支

时间:2019-06-14 10:22:50

标签: git azure github azure-devops repository

我在Azure devops中有一个代码存储库,用于管道构建和其他构建。 我有dev分支和master分支。开发人员将其代码推送到dev分支,并将其合并到master分支以进行发布。我想先检查代码是否已与master合并,然后再将代码推送到DEV分支。

这可以通过比较两个分支的手动运行命令来完成。但是我想知道是否可以通过脚本或天蓝色的存储库控件配置自动实现。

谢谢。

1 个答案:

答案 0 :(得分:1)

最佳解决方案

如果将master合并到dev中,则master将是dev的祖先。

使用它直接测试该条件:

if git merge-base --is-ancestor master dev; then
   # master is an ancestor of dev, and was therefore merged in
fi

反转master和dev以测试dev是否已合并到master。

稍长的解决方案

git merge-base将告诉您两个分支的最后合并点。如果将master合并为dev,则git merge-base master dev将为master,如果将dev合并为master,则该合并基础将为dev。

因此您可以使用此测试来检查master是否已合并到dev中:

if [ `git merge-base master dev` == `git rev-parse master` ]; then
   # master was merged into dev
else
   # master was not merged into dev
fi

如果您想知道dev是否已合并到master,请使用git rev-parse dev

参考

我在以下相关问题中找到了--is-ancestor解决方案: How can I tell if one commit is an ancestor of another commit (or vice-versa)?