Автор использует строки версий, такие как v0.0.0-20170922011244-0744d001aa84, состоящие из индикации semver v0.0.0, метки времени и чего-то, что выглядит как идентификатор коммита git.
Как мне определить эти строки версий?
Вам никогда не нужно вручную вычислять те сложные строки версий, которые называются псевдо-версиями .
Ежедневный рабочий процесс
Ваш типичный ежедневный рабочий процесс может быть:
- При необходимости добавьте операторы импорта в код
.go
.
- Стандартные команды, такие как
go build
, go test
или go mod tidy
, будут автоматически добавлять новые зависимости по мере необходимости для удовлетворения импорта (обновление go.mod
и загрузка новых зависимостей). По умолчанию будет использоваться @latest
версия новой прямой зависимости.
- При необходимости более конкретные версии зависимостей могут быть выбраны с помощью таких команд, как:
go get foo@v1.2.3
go get foo@e3702bed2
go get foo@latest
go get foo@branch
- или путем редактирования
go.mod
напрямую.
Обратите внимание, что вам не нужно было предлагать псевдо-версию самостоятельно в любом из этих примеров, даже при запросе определенного коммита (например, @e3702bed2
) или самого последнего коммита в ветке (например, @master
).
Когда я вижу псевдо-версии в моем go.mod
?
Если в итоге вы получите версию, которая разрешается в действительный тег semver с ведущим v
, например v1.2.3
или v1.2.4-beta-1
, то этот тег semver будет записан в вашем go.mod
файл. Если версия не имеет допустимого тега semver, она будет записана как псевдо-версия в ваш файл go.mod
, например, v0.0.0-20171006230638-a6e239ea1c69
, который включает в себя раздел версии, коммит метка времени и хеш коммита.
В вашем конкретном случае, golang.org/x/net/html
не имеет никаких тегов semver, что означает, что вы делаете go get golang.org/x/net/html@latest
, или go get golang.org/x/net/html@0744d001aa84
, или просто делаете go build
после первого включения import "golang.org/x/net/html"
в ваш файл .go
, тогда golang.org/x/net/html будет записан в вашем go.mod
как псевдо-версия, но учтите, что вам не нужно было самостоятельно определять сложную строку (поскольку команда go
переводит при необходимости модуль запрашивает , например, go get golang.org/x/net/html@0744d001aa84
, в соответствующую псевдо-версию и записывает результат в go.mod
).
Почему был выбран формат псевдо-версии?
Формат псевдо-версии помогает обеспечить простой общий порядок во всех версиях на основе стандартного порядка semver , что упрощает рассуждение о том, какой коммит будет считаться «более поздним», чем другой коммит, или фактический тег semver считается «более поздним», чем отдельный коммит.
Управление версиями зависимостей
Подробнее обо всем вышеперечисленном можно прочитать в разделе «Как обновить и понизить зависимость» вики-модуля Go Modules, который также содержит дополнительные ссылки на официальную документацию.