Использование "go get" для загрузки бинарных файлов без добавления их в go.mod - PullRequest
1 голос
/ 01 июля 2019

Я использую модули Go в своем проекте и в своей системе сборки (например, Travis CI). Я загружаю утилиту командной строки (написанную на Go) с go get, чтобы помочь с процессом сборки, например:

go get github.com/mitchellh/gox

Однако, это go get вызывает добавление файла в мой файл go.mod. Это загрязняет среду сборки, делая ее «грязной» (поскольку в некоторых файлах, отслеживаемых в git, есть изменения, в данном случае go.mod и go.sum), и я использую git describe --always --dirty --tag для описания моей сборки, которая отображается как «грязный».

Есть ли способ "пойти получить" бинарный файл просто для его загрузки, без добавления его в go.mod / go.sum?

Я пытался установить GOPATH где-то еще, даже тогда, go get обновляет go.mod / go.sum, чтобы добавить это как // indirect зависимость.

dir="$(mktemp -d)"; \
  env GOPATH="$dir" go get github.com/mitchellh/gox && \
  mv "$dir/bin/gox" "$(go env GOPATH)"/bin/gox

1 Ответ

0 голосов
/ 02 июля 2019

за go help build:

Флаг сборки -mod обеспечивает дополнительный контроль над обновлением и использованием go.mod.

Если вызывается с -mod = readonly, команда go не допускается из неявного автоматического обновления go.mod

...