看起来要获取更改的最新哈希值,就像这样:
const hash = body.push.changes[0].new.target.hash;
考虑到数组访问权限,这似乎有点尴尬-它将始终是第一个元素吗?
以下是我正在查看的文档: https://confluence.atlassian.com/bitbucket/event-payloads-740262817.html
推送的有效负载示例为: https://gist.github.com/ORESoftware/1ef3abe66dba23039ddd90fef1093318
当存储库发生更改/推送时,我真的很困惑如何访问最新的哈希值。
答案 0 :(得分:1)
在您链接的文档中,push属性包含:
推送的详细信息,其中包括changes属性。此属性包含一个数组,其中包含推送更新的所有引用以及以下属性:
所以不,您不能只看第一个值。如果用户一次按下多个分支(例如,git push origin --all
),则changes
数组中可能有多个对象。例如,一个分支可能已删除,另一个分支已创建(old
为空),而第三个分支可能已更新。因此,在处理这些推送事件时,您应确保同时处理多个可能的参考更新。
如何最可靠地获取最新哈希值
您到底想通过获取最新的哈希值来完成什么?如果您只需要记录所有哈希,则只需映射到changes
数组即可,例如
const hashes = body.push.changes.map(change => change.new.target.hash);
但是似乎您正在假设您可以一次处理一个存储库更改。这很可能是错误的-有人可以克隆存储库,以多种方式更改大量分支,然后向上推(或强制推!)。