Git 使用BitBucket中的RESTAPI获取最新的10个分支或所有分支

Git 使用BitBucket中的RESTAPI获取最新的10个分支或所有分支,git,rest,bitbucket,branch,Git,Rest,Bitbucket,Branch,我正在使用BitBucketRESTAPI获取分支。现在正在发生的是,它正在返回10个分支,但它们不是最新的,它们是混合的。我正在使用软件包进行请求。这就是我的代码的样子: $branchesObject = new Branches(); $branchesObject->getClient()->setApiVersion('2.0')->addListener(new OAuthListener($this->oauthParams)); $contentJson

我正在使用
BitBucket
RESTAPI获取
分支
。现在正在发生的是,它正在返回10个分支,但它们不是最新的,它们是混合的。我正在使用软件包进行请求。这就是我的代码的样子:

$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');
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
中,分支只是指向存储库中提交的标签。在
git
行话中,它是
ref
,与
tag
s一样。
分支
在某些方面不同于
标记
,其中之一是只要所述分支被签出(您在该分支上),分支总是被更新以指向最新提交

分支本身只是提交散列,没有任何其他属性,例如创建日期或上次更新的时间。要查看这一点,请尝试从repo浏览
.git
文件系统目录中的文件;它们在
/git/refs/heads/

尽管如此,还是有一些方法可以猜测分支是在什么时候创建的,如中所述,但这超出了Bitbucket公共API的范围

通过API实现 我建议您使用
curl
或Postman进行一些直接的API查询,以便了解哪些数据可用。查看实际的API,而不是您正在使用的包装器,似乎您正在使用的端点是。这似乎会返回所有活动分支,每页10个结果,按照
git
本身返回它们的顺序,并且没有任何明显的方式请求排序集。要分解它,有

  • 活动分支-看起来像是与所需数据的匹配
  • 每页10个-这意味着你将不得不提出更多的要求,直到你得到他们全部;在响应体中应该有一个
    next
    属性',保存下一组结果的URL
  • API没有明显的方法对它们进行排序-这意味着您需要在您的终端上进行一些处理。一旦你得到了数据,你可以更深入地挖掘并找到日期,然后根据需要对它们进行排序
另一种方式 前面的方法将在每次运行程序时进行查询。如果您需要更接近实时的东西,您可以设置一个webhook在每次提交时启动。webhook只是一个在请求URL时运行的程序;您可以将它与其他一些系统触发事件挂钩。推送提交后,将使用提交信息(例如日期、分支)调用webhook。然后可以存储它们,类似于
{“branch1”:“1590406741”,“branch2”:“1590406441”}



总而言之,有一些方法可以实现这一点,但您需要进行一些额外的编码。

您如何定义最新的分支?按日期?凭承诺?