我正在使用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
中,分支只是指向存储库中的提交的标签。在git
术语中,它是ref
,tag
也是如此。 branch
与tag
在某些方面有所不同,一种是只要检查出该分支(您在该分支上),分支就会始终更新为指向最新提交。
分支本身只是提交哈希,没有任何其他属性,例如创建日期或上次更新时间。要查看此内容,请尝试从存储库中浏览.git
文件系统目录中的文件;他们在./git/refs/heads/
中。
话虽如此,但有几种猜测分支首次创建的时间的方法,如How to determine when a Git branch was created?中所述,但这超出了Bitbucket的公共API的范围。
我建议您使用curl
或Postman进行一些直接的API查询,以了解可用的数据。查看实际的API,而不是您使用的包装器,似乎您使用的端点是/{workspace}/{repo_slug}/refs/branches/
。这似乎将以/{workspace}/{repo_slug}/refs/branches/
本身返回它们的顺序返回所有活动分支,每页有10个结果,而没有任何明显的请求排序集的方式。要分解,有
git
属性,该属性应保存下一组结果的URL;先前的方法将在程序每次运行时进行查询。如果您需要更接近实时的信息,可以设置webhook在每次提交时触发。 Webhook只是在请求URL时运行的程序。您可以将其挂接到其他系统触发事件。推送提交后,将使用提交信息(例如,日期,分支。然后,您可以存储它们,例如next
。
{ "branch1": "1590406741", "branch2": "1590406441"}
总而言之,有一些方法可以实现,但是您将需要做一些额外的编码。