Обновить
9
0
Евгений Лопаткин@NiktapoL

Golang разработчик

Отправить сообщение

Возможно данный метод выглядит довольно необычным. Однако именно как предлагается делать в документации. Система модулей Golang'а умеет работать с такими тэгами. Это не единственный возможный способ экспортировать модули. Можно попробовать git submodule, как вы описали, можно использовать workspaces. Мне показалось, что описаный в статье способ наиболее удобный.

Если вы хотите поделиться библиотеками из приватного репозитория, то лучше рассмотрите другие варианты. Например можно вынести библиотеку в отдельный публичный репозиторий и использовать Go Workspaces при необходимости.

Все должно работать. Во всяком случае этот подход работает в gitlab для проектов, которые находятся в нескольких вложенных группах.

Вы можете расположить библиотеку в другом месте, все продолжит работать как раньше. Нужно только чтобы:

  • Библиотека была модулем

  • Был git tag, который содержит путь до библиотеки и ее версию

  • Было указано правило replace в go.mod для того, чтобы ваш сервис использовал локальную версию библиотеки

Добавил в своем репозитории пример с библиотекой, которая находится во вложенных директориях. Обратите внимание на тэг для этой библиотеки:

git tag pkg/deep/level1/level2/deeplib/v1.0.0

Теперь ее можно импортировать так:

go get github.com/LopatkinEvgeniy/go-pkg-example/pkg/deep/level1/level2/deeplib@v1.0.0

Да, вы правы. Структура проекта, описанная в https://github.com/golang-standards/project-layout не является стандартом. Обновил на более корректную формулировку.

Информация

В рейтинге
Не участвует
Откуда
Ростов-на-Дону, Ростовская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Бэкенд разработчик
Git
Linux
Golang
PostgreSQL