Учитывая долгий мерзавец, как безопасно получить короткий коммит
Если я запрашиваю API-интерфейс bitbucket для коммитов, я получаю длинную версию:
bitbucket_curl(){
curl -H 'Authorization:Basic YW1JyKg==' "https://api.bitbucket.org$@"
}
commits="$(bitbucket_curl '/2.0/repositories/interos/datavana/commits/alex/dockerize?pagelen=3')"
latest_commit="$(echo "$commits" | jq -r '.values[0].hash')"
учитывая длительный коммит: c56cefbd0c81142558cf814cba7d7cd75d7cb6a7
Есть ли способ надежно получить короткий хеш коммита? Разве это не похоже на последние 10 символов или что-то? Или, возможно, есть способ запросить короткий хэш из API Bitbucket? На эту тему я ищу надежный способ получить самый последний коммит для ветки.
2 ответа
Я не очень хорошо знаю API Bitbucket, и требуется ли его конечным точкам полный хэш SHA-1, но, насколько я знаю, официальной короткой версии хэша коммитов не существует. Единственным общим требованием является то, что фрагмент используемого хэша может корректно преобразоваться в один коммит.
Сеть Bitbucket, кажется, отображает только первые 7 символов хэша SHA-1. Существует около 78 миллиардов различных хэшей длиной 7, поэтому вряд ли возникнет коллизия на одной странице.
В git есть команда для получения короткой версии хэша коммита, учитывая полный хэш коммита в качестве входных данных.
git rev-parse --short $commit
Если $commit
c56cefbd0c81142558cf814cba7d7cd75d7cb6a7
, это выведет
c56cefb
Нашел решение в этом ответе SO от user223092