我在Azure devops中有一个代码存储库,用于管道构建和其他构建。 我有dev分支和master分支。开发人员将其代码推送到dev分支,并将其合并到master分支以进行发布。我想先检查代码是否已与master合并,然后再将代码推送到DEV分支。
这可以通过比较两个分支的手动运行命令来完成。但是我想知道是否可以通过脚本或天蓝色的存储库控件配置自动实现。
谢谢。
答案 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)?