Что означает $.changes[0].toHash в веб-крючке Bitbucket, если событие добавлено тегом?

#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^{}