Как указать зависимость модуля Go в go.mod на последний коммит в репо? - PullRequest
0 голосов
/ 08 декабря 2018

Начиная с v1.11 Go добавлена ​​поддержка модулей.Команды

go mod init <package name>
go build

будут генерировать файлы go.mod и go.sum, которые содержат все найденные версии для зависимостей пакета.

Если у модуля нет выпусков, используется последний коммит этого модуля.Если у модуля действительно есть выпуски, последний выбирается как зависимость.

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

Похоже, я могу сделать это вручную в go.mod с

module /my/module

require (
...
github.com/someone/some_module v0.0.0-20181121201909-af044c0995fe
...
)

, где v0.0.0 не соответствует последнему опубликованному тегу выпуска, 20181121201909 будет меткой времени коммита, а af044c0995fe будет хэшем коммита?Должна ли такая информация быть найдена и введена вручную, или есть лучший способ?

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Кроме ответа от Эвертона об использовании go get github.com/someone/some_module@af044c0995fe для получения конкретного коммита, вы также можете использовать имена веток, такие как:

  • go get github.com/someone/some_module@master
  • go get github.com/someone/some_module@dev_branch

Эти примеры получают последний коммит в соответствующей ветви.

Он все равно будет записан в виде псевдо-версии в вашем файле go.mod, например v0.0.0-20171006230638-a6e239ea1c69.(Это помогает обеспечить простой общий порядок во всех версиях на основе стандартного порядка semver ).

0 голосов
/ 08 декабря 2018

Просто 'go get' в хеше фиксации, который вы хотите:

go get github.com/someone/some_module@af044c0995fe

'go get' корректно обновит файлы зависимостей (go.mod, go.sum).

Дополнительная информация: https://github.com/golang/go/wiki/Modules#how-to-upgrade-and-downgrade-dependencies

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...