Bitbucket API-“推送”事件的有效负载-如何最可靠地获取最新哈希

6 bitbucket bitbucket-api

看起来要获取更改的最新哈希值,例如:

const hash = body.push.changes[0].new.target.hash;
Run Code Online (Sandbox Code Playgroud)

但是,考虑到数组访问,这似乎有点尴尬-它将始终是第一个元素吗?

这是我正在查看的文档:https : //confluence.atlassian.com/bitbucket/event-payloads-740262817.html

推送的有效负载示例为:https : //gist.github.com/ORESoftware/1ef3abe66dba23039ddd90fef1093318

当对存储库进行更改/推送时,我真的对如何访问最新的哈希感到困惑。

小智 0

从您链接的文档中,推送属性包含:

推送的详细信息,其中包括更改属性。此属性包含一个数组,其中包含推送更新的所有引用以及以下属性:

所以不,你不能只看第一个值。如果用户一次推送多个分支(git push origin --all例如),则changes数组中可能有多个对象。例如,一个分支可能被删除,另一个分支被创建(old将为空),第三个分支可能被更新。因此,在处理这些推送事件时,您应该确保一次处理多个可能的引用更新。

如何最可靠地获取最新的哈希值

您到底想通过获取最新的哈希值来实现什么目的?如果您只需要记录所有哈希值,则只需映射数组就足够了changes,例如

const hashes = body.push.changes.map(change => change.new.target.hash);
Run Code Online (Sandbox Code Playgroud)

但似乎您假设您可以一次处理一个存储库更改。这很可能是错误的——有人可以克隆一个存储库,以不同的方式更改大量分支,然后推送(或强制推送!)这些更改。