api - 使用 BitBucket API,列出哪些分支在 master 中有所有内容,哪些没有
问题描述
我有一个有 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 中包含所有内容和不包含内容的分支进行分类。
推荐阅读
- c++ - 在 C++ 中打印某个数字是否是回文数
- python - Raspbian 在睡眠时检测键盘输入
- javascript - 使用 innerHTML 嵌套时的 DOM 待办事项列表
- html - 在背景图像上添加叠加层后的水平滚动条
- ios - 有没有办法在 Swift 中将当前迭代计数作为 Int 访问?
- javascript - CORS 请求未发送 cookie
- javascript - Javascript - 未捕获的 SyntaxError:意外标记“其他”
- firebase - 如何在 React Native Firebase 的 Firebase 身份验证中避免重新验证
- amazon-web-services - Lambda@Edge URL 使用 NodeJS 重定向到 s3 SignedUrl
- spring - 在spring boot security中的会话超时后,我如何重定向到不同的jsp页面(而不是重定向到登录页面)