Как обновить определённый пакет в проекте до последней версии?

У меня есть проект c зависимостями и один из них нужно обновить.

go.mod:
    require (
        github.com/c0caina/PP-DF-Plugin v0.0.0-20210329101903-fcd6d50e1db2
    )

Я уже внёс в данный репозиторий некоторые изменения и хочу использовать их в своём проекте. Но как мне обновить версию пакета?

  • go get github.com/c0caina/PP-DF-Plugin - обновляет пакет через раз.
  • go get -u github.com/c0caina/PP-DF-Plugin - обновит все пакеты в go.mod.

Ответы (1 шт):

Автор решения: Senior Pomidor

работая с Git, удобно ввести версионирование репозиториев с помошью тэгов.

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

require (
    github.com/c0caina/PP-DF-Plugin v0.0.1

можно добавить явные и не явные зависимости через команду

go get github.com/c0caina/[email protected] - по тэгу
go get github.com/c0caina/PP-DF-Plugin@master- по имени бранча
go get github.com/c0caina/PP-DF-Plugin@08c92af- по коммиту
go get github.com/c0caina/PP-DF-Plugin@latest- последняя версия по тэгам. Может как повысить версию, так и понизить.

теперь ваш файл go.mod может выглядеть как

require github.com/c0caina/PP-DF-Plugin v0.0.1+incompatible // indirect

Суффикс +incompatible добавляется ко всем пакетам, которые еще не включены в Go Modules или нарушают его правила управления версиями. Поскольку мы еще не импортировали пакет нигде в нашем проекте, он был помечен как // indirect. Мы можем привести в порядок наши зависимости следующей командой go mod tidy
В зависимости от текущего состояния вашего репо, это приведет к удалению неиспользуемого модуля или удалению комментария // indirect.

Цель go mod tidy также состоит в том, чтобы добавить любые зависимости, необходимые для других комбинаций ОС, архитектуры и тегов сборки. Запускайте это перед каждым релизом.

Документация

→ Ссылка