Как управляются версии подмодуля? - PullRequest
0 голосов
/ 09 марта 2020

Если в репозитории Go есть файл go.mod в его root, но также и в подпапке, как выпускаются версии подмодуля?

Например, моя команда была работа с хранилищем на нашем внутреннем инструменте cli. В итоге мы использовали:

github.com/hashicorp/vault/api <- имеет go .mod </p>

и

github.com/hashicorp/vault/commands <- не имеет go .mod так наследуется от <code>github.com/hashicorp/vault

Я пытаюсь обновить vault / api до последней версии 1.3.3:

github.com/hashicorp/vault v1.3.3
github.com/hashicorp/vault/api v1.3.3

Проблема в том, что я получаю:

go: github.com/hashicorp/vault/api@v1.3.3: reading github.com/hashicorp/vault/api/api/go.mod at revision api/v1.3.3: unknown revision api/v1.3.3

Я думаю, это вызвано этим root модулем и конфликтом.

Ответы [ 2 ]

2 голосов
/ 09 марта 2020

Версии субмодулей не обязательно идут вровень с версиями родительских модулей. Они должны рассматриваться как полностью отдельные модули, которые просто находятся в одной структуре хранилища / каталога.

Проверка https://github.com/hashicorp/vault/releases для официальных выпусков / тегов - Go поддерживает иерархическую структуру Git теги для обозначения версий подмодулей. Например, хотя на сегодняшний день самой последней версией vault является 1.3.3, я нахожу только vault/api в версии 1.0.4 (это самый последний тег с api/v1.0.4)

Просто выполните go get, чтобы получить его последнюю версию. На самом деле вам не нужно указывать версии в go .mod при первоначальном импорте - инструмент go найдет для вас последние версии.

0 голосов
/ 09 марта 2020

A Go Модуль - это не что иное, как набор Go пакетов (папок). Исходные файлы, принадлежащие пакету, следует размещать в отдельных папках. В Go принято называть эту папку с именем, совпадающим с именем пакета.

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

...