使用BitBucket的Rest API获取最新的10个分支或所有分支

问题描述 投票:3回答:1

我正在使用BitBucket Rest API来获取branches。现在,当前正在发生的事情是,它将返回10个分支,但是它们不是最新的,它们是混杂的。我正在使用gentle/bitbucket-api程序包发出请求。这是我的代码的样子:

$branchesObject = new Branches();
$branchesObject->getClient()->setApiVersion('2.0')->addListener(new OAuthListener($this->oauthParams));

$contentJson = $branchesObject->all('<account>', '<repo>')->getContent();
$contentArray = json_decode($contentJson, true);
$branches = array_column($contentArray['values'], 'name');

如果我dd($branches),这是输出的样子:

array:10 [
  0 => "branch1"
  1 => "branch2"
  2 => "branch3"
  3 => "branch4"
  4 => "branch5"
  5 => "branch6"
  6 => "branch7"
  7 => "branch8"
  8 => "branch9"
  9 => "branch10"
]

这些不是最新的10个分支。 Api版本为2.0。无论如何,我可以获得最近的10个分支或所有活动的分支吗?

git rest bitbucket branch
1个回答
2
投票

总之,看起来没有任何直接方法可以获取特定数据(最新分支)。

自行完成

首先要考虑的是是否可以完全提取这种类型的数据。

git中,分支只是指向存储库中的提交的标签。在git术语中,它是reftag也是如此。 branchtag在某些方面有所不同,一种是只要检查出该分支(您在该分支上),分支就会始终更新为指向最新提交。

分支本身只是提交哈希,没有任何其他属性,例如创建日期或上次更新时间。要查看此内容,请尝试从存储库中浏览.git文件系统目录中的文件;他们在./git/refs/heads/中。

话虽如此,但有几种猜测分支首次创建的时间的方法,如How to determine when a Git branch was created?中所述,但这超出了Bitbucket的公共API的范围。

通过API执行

我建议您使用curl或Postman进行一些直接的API查询,以了解可用的数据。查看实际的API,而不是您使用的包装器,似乎您使用的端点是/{workspace}/{repo_slug}/refs/branches/。这似乎将以/{workspace}/{repo_slug}/refs/branches/本身返回它们的顺序返回所有活动分支,每页有10个结果,而没有任何明显的请求排序集的方式。要分解,有

  • 活动分支-似乎与所需数据相匹配;
  • 每页10个-这意味着您必须提出更多请求,直到获得全部请求;在响应正文中,应该有一个git属性,该属性应保存下一组结果的URL;
  • API没有对它们进行排序的明显方法-这意味着您需要在末端进行一些处理。获得数据后,您可以更深入地挖掘并找到日期,然后根据需要对其进行排序。
  • 另一种方式

先前的方法将在程序每次运行时进行查询。如果您需要更接近实时的信息,可以设置webhook在每次提交时触发。 Webhook只是在请求URL时运行的程序。您可以将其挂接到其他系统触发事件。推送提交后,将使用提交信息(例如,日期,分支。然后,您可以存储它们,例如next

{ "branch1": "1590406741", "branch2": "1590406441"}


总而言之,有一些方法可以实现,但是您将需要做一些额外的编码。

© www.soinside.com 2019 - 2024. All rights reserved.