Git获取两个分支有足够的历史覆盖合并基地?



对于需要在MR上的diff上工作的CI作业,我想获取具有足够历史记录的源分支和目标分支,以可靠地运行git diff main...mr(其中main是目标分支,mr是源分支)。(即,历史记录应该包括mr,并追溯到足够远的地方,以找到合并基地。)

一种不可靠且效率低下的方法是选择一个可能足够的深度(例如1024)和git fetch --depth=1024 mr && git fetch --depth=1024 main,但在极端情况下,1024可能不够,并且在正常情况下,它会获取比必要的更多的历史。

我们正在使用GitLab CI,所以如果在git中没有通用的方法来获取合并库,任何GitLab特定的解决方案也都是受欢迎的。

作为具体的例子,clang-tidy-diff是我想使用的需要diff的工具之一。

我不知道一个查询远程服务器的好方法;你能告诉我这两个分支的合并基数吗?&;,也许有人会想出更好的答案。

一种方法是,只要git merge-base mr main返回一个错误,就可以越来越深入地获取

#/bin/bash
while ! git merge-base origin/mr origin/main > /dev/null; do
depth=$((depth+1024))
git fetch --depth=$depth origin mr && git fetch --depth=$depth origin main
done

在你允许完全不相关的分支在你的中央仓库着陆的奇怪情况下,你可能还需要检查"取回更深"的";获取新的东西

相关内容

  • 没有找到相关文章

最新更新