使用 BitBucket API,列出哪些分支包含 master 中的所有内容,哪些不包含

Using the BitBucket API, list which branches have all content in master and which dont

我有一个有 100 个分支的 bitbucket 服务器。我想将包含主分支上已有代码的分支与不包含代码的分支分开。

我认为获取信息的唯一方法是获取分支列表:

https://<bitbucket host>/rest/api/1.0/projects/<project>/repos/<MyRepo>/branches

并得到每个分支的头部

并查看提交是否存在于 master 的提交列表中: https://<bitbucket host>/rest/api/1.0/projects/<project>/repos/<MyRepo>/commits?branch=master&limit=1000'

这非常慢。有人能想到更好的方法吗?基本上我希望识别所有已添加到 master 中的分支,因此可以安全地删除。

我认为我想要相当于:

for each branch:
  git rev-list --left-right --count origin/master...origin/FOO

提前致谢

您首先可以使用 API 调用获取该特定存储库中所有可用分支的列表,并将其放入 python 列表中。由于您有 100 个分支并且还有分页,请尝试通过迭代页面值来循环 curl,直到获得的响应为空。

curl --url "https://api.bitbucket.org/2.0/repositories/workspace/repository_name/refs/branches?pagelen=100&page={Iterate}" --user username:password --request GET --header "Accept: application/json"

稍后有一个 API 可用于检查源分支中的所有提交是否在目标分支中可用。

curl --url "https://api.bitbucket.org/2.0/repositories/workspace/repository_name/commits/source_branch?exclude=destination_branch" --user username:password --request GET --header "Accept: application/json"

因此,您可以将源作为主分支并将所有其他分支作为目标进行迭代并获得响应。根据响应是否为空,您可以将master中包含所有内容的分支和不包含内容的分支进行分类。