#json #bitbucket #webhooks #git-tag #bitbucket-webhook
Вопрос:
Наш сервер Bitbucker настроен для вызова веб-ссылок (полученных Дженкинсом) на push-события, которые включают обновления филиалов и добавленные теги. Содержимое HTTP-сообщения, включенное в этот веб-справочник, представляет собой JSON, описывающий событие. Полезные нагрузки событий описаны здесь: https://confluence.atlassian.com/bitbucketserver076/event-payload-1026535078.html
(Я буду использовать « $
» для ссылки на корень полученного JSON)
Когда я выполняю a git push origin {my_branch}
, JSON, включенный в webhook, дает значения для $.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"
}
]
}
…тогда я мог бы видеть {fromHash}
и {toHash}
в своем журнале git, например:
$ 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"
}
]
}
git log
Вывод остается неизменным в моей оболочке, так что же {toHash}
представляет собой значение b82dd85...
?
Ответ №1:
toHash представляет SHA аннотированного тега, созданного с помощью git tag -a ...
Вы можете увидеть как идентификатор фиксации, так и SHA объекта тега с помощью git show-ref --tags -d
:
В вашем случае это должно выглядеть примерно так
$ git show-ref --tags -d | grep 0.1.0
b82dd854c413d8e09aaf68c3c286f11ec6780be6 refs/tags/0.1.0
178864a7d521b6f5e720b386b2c2b0ef8563e0dc refs/tags/0.1.0^{}