Gitlab Subgroup + go get

Дано:

  • gitlab, скорее всего, развернутый во внутреннем контуре;
  • “перфекционизм”, требующий раскладывать всё “по папочкам”, или требование свыше;
  • внутренний пакет на Go, который необходимо устанавливать как зависимость.

Предположим, что ваша зависимость лежит по адресу:

https://gitlab.your-company.tld/project-group/lib-group/lib

Установить его, указав имя пакета, у вас, к сожалению, не получится. Путей решения здесь два:

  • добавить к названию репозитория окончание .git;
  • использовать директиву replace в файле go.mod.

Первое решение максимально простое, но, думаю, многие согласятся, такое себе.

Второе решение для приведенного примера с использованием replace будет выглядеть так:

module ...

go 1.XX

require (
        ...
        gitlab.your-company.tld/project-group/lib-group/lib vTAG
        ...
)

replace gitlab.your-company.tld/project-group/lib-group/lib => gitlab.your-company.tld/project-group/lib-group/lib.git v<TAG>

Возможно, вам потребуется конфигурация url в ~/.gitconfig, но её лучше уточнять у тех, кто разворачивал ваш gitlab. В подавляющем большинстве случаев она будет примерно такой:

[url "ssh://[email protected]:"]
        insteadOf = https://gitlab.your-company.tld