Сделать go get репозитория без обновления его внутренних зависимостей
Когда я делаю go get нужного мне репозитория (моего отдельного репозитория), вместо того чтобы просто подтянуть все зависимости, он обновляет версии некотрых внутренних зависимостей того репозитория, который я стягиваю, и скачивает их. Такими тэмпами, однажды это сломает сборку.
Как я могу сделать go get репозитория, без обновления его внутренних звисимотей? Или, возможно, там есть внутренний механизм, который предотвратит обновление и скачивание обратно несовместимых версий.
Ответы (2 шт):
Ну для начала не используй go get используй go mod, тогда все зависимости с версиями будут явно храниться в журнале go.mod.
go mod init .
go mod edit -require github.com/wilk/[email protected]
go get -v -t ./...
go build
go install
В этом примере главный модуль зависит от A 1.0 и B 2.1.
Поскольку B 2.1 зависит от A 1.1, будет использоваться именно эта версия A.
и еще используется A 1.1, а он в свою очередь использует C 1.1.
Окончательный список зависимостей:
A 1.1
B 2.1
C 1.1
теперь понимаете почему go get или go mod tidy обновляют ненужные вам зависимости?
вы можете попробоввать использовать exclude или replace
require (
github.com/dep/one v1.0.0
github.com/dep/two/v2 v2.3.0
github.com/dep/other v0.0.0-20180523231146-b3f5c0f6e5f1
github.com/dep/legacy v2.0.0+incompatible
)
exclude github.com/dep/legacy v1.9.2
replace github.com/dep/one => github.com/fork/one
exclude - запрещает использование определенной версии модуля
replace - заменяет один модуль на другой
