go run не получает последний тег

#go #go-modules

#Вперед #go-modules

Вопрос:

Я играю с GraphQL в Go, и я пытался получить инструмент gqlgen, используя знакомую go run команду.

Я ожидал, что он получит последний доступный тег, вместо этого я каким-то образом получаю тег, который, похоже, вообще не существует в репозитории:

 $ go run github.com/99designs/gqlgen version
v0.9.1-dev
  

Я бы ожидал, что приведенное выше значение будет возвращено для последнего тега

 v0.13.0
  

Версия Go установлена на моей рабочей станции:

 $ go version
go version go1.15.5 darwin/amd64
  

У кого-нибудь есть идеи, что происходит?

ОБНОВЛЕНИЕ: отключение GOPROXY не помогает

UPDATE2: оказывается, версия жестко запрограммирована version.go , как вы можете видеть здесь, но даже если go run вместо последнего тега будет получен мастер, вы все равно ожидаете, что результат будет 0.13.0-dev соответствовать основной ветке, вместо этого я подозреваю, что существует некоторый порядок строк версий тегов, порядок 0.9.* которых выше 0.1*.*

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

1. Вы не должны использовать go run , если версии имеют какое-либо значение. Лучше просто избегать этого вообще.

Ответ №1:

go run в настоящее время не поддерживает запуск определенной версии двоичного файла, но обратите внимание, что есть принятое предложение Go добавить эту функциональность в будущую версию go команды.

Начиная с версии 1.16, вы можете вместо go install этого использовать двоичный файл с определенной версией, а затем запускать этот двоичный файл из его места установки (либо $(go env GOBIN) или $(go env GOPATH)/bin ).

 $ GOBIN=~/bin go install github.com/99designs/gqlgen@latest
$ ~/bin/gqlgen ...
  

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

1. Для версий Go через Go 1.16 go run выполняется любая версия, уже указанная зависимостями текущего модуля. Вы можете определить эту версию с помощью go list -f '{{with .Module}}{{.Path}} {{.Version}}{{end}}' github.com/99designs/gqlgen .

Ответ №2:

Я думаю, что команда version была неправильно настроена при сборке, и что v0.9.1-dev не был тегом во время сборки.