Если я запрашиваю API битбакета для коммитов, я получаю длинную версию:
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? По этому поводу я ищу надежный способ получить самую последнюю фиксацию для ветки.
Короткий хеш, который действителен сегодня, может не быть завтра. Просто придерживайтесь длинных.
Я не знаю хорошо API Bitbucket и требуют ли его конечные точки полного хэша SHA-1, но, насколько мне известно, официальной короткой версии хэша коммита не существует. Единственное общее требование состоит в том, чтобы используемый фрагмент хэша мог корректно разрешаться только в одну фиксацию.
Сеть Bitbucket, похоже, отображает только первые 7 символов хэша SHA-1. Существует примерно 78 миллиардов различных хэшей длины 7, так что коллизия на одной странице маловероятна.
Похоже, лучше придерживаться длинного хэша, так как однажды вам могут понадобиться хэши, которые являются универсальными, а не только уникальными для одного репо.
Нет пути надежный. Условно это первый 7 символов для небольших проектов, 8 для больших проектов и 10 для крупных проектов. Почти, конечно, вы будете в безопасности, всегда беря первые 10.