我们的 Bitbucker 服务器配置为在推送事件上调用 webhook(由 Jenkins 接收),其中包括分支更新和添加的标签。此 Webhook 中包含的 HTTP POST 内容是描述事件的 JSON。此处描述了事件有效负载:https ://confluence.atlassian.com/bitbucketserver076/event-payload-1026535078.html
(我将使用“ $
”来指代接收到的 JSON 的根)
当我执行 agit push origin {my_branch}
时,webhook 中包含的 JSON 会给出值,$.changes[0].fromHash
并且$.changes[0].toHash
我可以将其与我的 git 日志相关联。
例如,如果接收到的 JSON 是:
{
"eventKey":"repo:refs_changed",
"date":"2017-09-19T09:45:32+1000",
"actor":{ ... },
"repository":{ ... },
"changes":[
{
"ref":{
"id":"refs/heads/master",
"displayId":"master",
"type":"BRANCH"
},
"refId":"refs/heads/master",
"fromHash":"ecddabb624f6f5ba43816f5926e580a5f680a932",
"toHash":"178864a7d521b6f5e720b386b2c2b0ef8563e0dc",
"type":"UPDATE"
}
]
}
...然后我就可以在我的 git 日志中看到{fromHash}
和,例如:{toHash}
$ git log --oneline -n 4
178864a sit
dcbc68d dolor
ecddabb ipsum
b8bf8f0 lorem
但是当我推送一个 git 标签时,例如:
$ git tag -a 0.1.0 -m "0.1.0"
$ git push origin 0.1.0
...然后{fromHash}
是明显无效的0000...
,但{toHash}
不是明显无效的值,我无法与我的 git 日志中的任何内容进行核对。例如:
{
"eventKey":"repo:refs_changed",
"date":"2017-09-19T09:47:32+1000",
"actor":{ ... },
"repository":{ ... },
"changes":[
{
"ref":{
"id":"refs/tags/0.1.0",
"displayId":"0.1.0",
"type":"TAG"
},
"refId":"refs/tags/0.1.0",
"fromHash":"0000000000000000000000000000000000000000",
"toHash":"b82dd854c413d8e09aaf68c3c286f11ec6780be6",
"type":"ADD"
}
]
}
我的shell中的git log
输出保持不变,那么值代表什么?{toHash}
b82dd85...