首页 > 解决方案 > Bitbucket 服务器 API:查找分支的合并库

问题描述

概括

Bitbucket服务器(不是云)API 是否提供了等效git merge-base branch1 branch2于查找两个分支的共同祖先的功能?

细节

我们想使用 Bitbucket API 来确定某个功能分支何时“太旧”,即在一段时间内(例如一周)没有从 master 或其他一些主要分支(开发、发布等)重新定位或合并到该分支。我看到以下 REST 端点

/rest/api/1.0/projects/EXAMPLE/repos/exampleRepo/commits/?since=release/1.2.3&until=bugfix'

这可以给出上面示例中没有的 所有提交release/1.2.3。在重新设置分支的情况下,这很好——我只会找到最旧的特定于分支的提交,它的父级是合并基础。

然而,有些人确实合并提交以更新特性分支(例如git merge release/1.2.3,在特性分支上),我能想到的最好的方法是:

  1. 解析Merge branch 'release/1.2.3' of <repo> into bugfix看起来很脆弱的提交消息,因为有人可能会重写合并提交消息
  2. 找到两个父母最近的提交,拿第二个提交(似乎是源分支),在源分支上查找它,如果找到,将其用作确定共同祖先年龄的基础。

标签: gitbitbucketbitbucket-server

解决方案


也许找到合并基础的解决方法是检查以下历史release/1.2.3

如果历史release/1.2.3足够有规律,也许你会有更好的时间看

.../commits/?since=bugfix&until=release/1.2.3

并从此列表中获取最后一次提交的父级。

我会建议添加一个--first-parent选项,但 API 似乎没有提供该标志。


推荐阅读