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

时间:2019-05-21 22:45:13

标签: bitbucket bitbucket-api

看起来要获取更改的最新哈希值,就像这样:

const hash = body.push.changes[0].new.target.hash;

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

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

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

当存储库发生更改/推送时,我真的很困惑如何访问最新的哈希值。

1 个答案:

答案 0 :(得分:1)

在您链接的文档中,push属性包含:

  

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

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

  

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

您到底想通过获取最新的哈希值来完成什么?如果您只需要记录所有哈希,则只需映射到changes数组即可,例如

const hashes = body.push.changes.map(change => change.new.target.hash);

但是似乎您正在假设您可以一次处理一个存储库更改。这很可能是错误的-有人可以克隆存储库,以多种方式更改大量分支,然后向上推(或强制推!)。

相关问题