У меня есть частный сервер, к которому я получаю доступ через s sh. Я создал пустой репозиторий там под /var/git/mylib.git
, и я могу получить доступ к этому репозиторию с помощью git clone user@domain.tld:/var/git/mylib.git
.
Содержимое репозитория представляет собой библиотеку go, и я хотел бы иметь возможность сделать go get domain.tld/mylib
для получения моей библиотеки вместе с ее зависимостями за один шаг.
Затем я настроил git для преобразования HTTP-вызовов на мой сервер в S SH, используя команду git config --global url."user@domain.tld:/var/git/".insteadOf "https://domain.tld/"
(как описано здесь Как правильно "go получить" частный репозиторий? ).
Теперь, если я запускаю go get domain.tld/mylib
, я получаю следующее
Fetching https://domain.tld/mylib?go-get=1
Parsing meta tags from https://domain.tld/mylib?go-get=1 (status code 404)
package domain.tld/mylib: unrecognized import path "domain.tld/mylib" (parse https://domain.tld/mylib?go-get=1: no go-import meta tags ())
и если я запускаю go get domain.tld/mylib.git
, я не получаю ошибку, и библиотека успешно загружена. Единственная проблема состоит в том, что go get
генерирует следующее дерево каталогов
.
├── pkg
│ └── linux_amd64
│ └── domain.tld
└── src
└── domain.tld
└── mylib.git
, поскольку вы можете видеть, что библиотека устанавливается в каталог с суффиксом .git
, который нарушает весь мой код, поскольку все пути импорта в мои пакеты имеют форму import "domain.tld/mylib/..."
, и теперь мне нужно изменить их на import "domain.tld/mylib.git/..."
, что кажется немного странным.
Можно ли как-нибудь сказать go get
не добавлять суффикс .git
в каталоги это достает? Или есть лучший способ добиться того, чего я хочу?