суббота, 6 июля 2019 г.

Псевдо-версии модулей в Golang

Файл go.mod и команда go более широко используют семантические версии в качестве стандартной формы для описания версий модуля, чтобы можно было сравнивать версии, чтобы определить, какие из них следует рассматривать раньше или позже, чем другие. Версия модуля, такая как v1.2.3, вводится путем маркировки ревизии в репозитории исходного кода модуля. На неотмеченные ревизии можно ссылаться, используя "псевдо-версии", например v0.0.0-yyyymmddhhmmss-abcdefabcdef, где время (yyyymmddhhmmss) - это время коммита в UTC, а окончательный суффикс (abcdefabcdef) - это префикс хеша коммита. Часть времени гарантирует, что две псевдо-версии можно сравнить, чтобы определить, что произошло позже, хеш коммита идентифицирует базовый коммит, а префикс (v0.0.0- в этом примере) получен из самой последней теговой версии в графе коммитов перед этим коммитом.

Существует три формы псевдо-версий:

vX.0.0-yyyymmddhhmmss-abcdefabcdef используется, когда не существует ранее зафиксированного коммита с соответствующей основной версией до целевого коммита. (Изначально это была единственная форма, поэтому некоторые старые файлы go.mod используют эту форму даже для коммитов, которые следуют тегам (меткам).)

vX.Y.Z-pre.0.yyyymmddhhmmss-abcdefabcdef используется, когда самый последний версионный коммит перед целевым коммитом это vX.Y.Z-pre.

vX.Y.(Z+1)-0.yyyymmddhhmmss-abcdefabcdef используется, когда самый последний версионный коммит перед целевым коммитом это vX.Y.Z.

Псевдо-версии никогда не нужно вводить вручную: команда go примет хэш простого коммита и автоматически переведет его в псевдо-версию (или версию с тегом, если она доступна). Это преобразование является примером запроса модуля (module query) (см. в следующем посте).


Читайте также:


Комментариев нет:

Отправить комментарий