#go #mercurial
#Вперед #mercurial
Вопрос:
Возможно ли импортировать модуль с помощью mercurial с помощью ssh?
Я нашел очень мало информации об использовании mercurial с go, и то немногое, что я нашел, было с http.
Ответ №1:
Короткий ответ — да.
Текст, отображаемый go help importpath
или доступный здесь, описывает, как задать пути импорта, чтобы подразумевать конкретную систему управления версиями. Некоторые сайты известны заранее:
Несколько распространенных сайтов, размещающих код, имеют специальный синтаксис:
[список сокращен, но GitHub подразумевает использование протокола Git, Launchpad подразумевает Bazaar и так далее]Для кода, размещенного на других серверах, пути импорта могут быть либо указаны с типом управления версиями, либо инструмент go может динамически извлекать путь импорта по https / http и определять, где находится код, из тега <meta> в HTML.
Поэтому, если у вас нет доступа к тегам такого типа или контроля над <meta>
ними, вам следует импортировать с явно указанным VCS:
… путь импорта формы
repository.vcs/path
указывает данный репозиторий с суффиксом .vcs или без него, используя именованную систему управления версиями, а затем путь внутри этого репозитория.
То есть, чтобы указать go get
, что он должен использовать протокол Mercurial для хостинга example.com
, который вы можете использовать:
import "example.com/me.hg/repo"
или:
import "example.com/me/repo.hg"
где .hg
то, что подразумевает использование Mercurial.
Как только вы выбрали конкретный VCS, все становится немного сложнее:
Когда система контроля версий поддерживает несколько протоколов, каждый из них проверяется по очереди при загрузке. Например, загрузка Git пытается выполнить https://, затем git ssh://.
Исходный код для импортера Go VCS содержит подробную информацию. Репозиторий Mercurial импортирует https
сначала попробуйте, затем ssh
.
Если вы можете использовать <meta>
тег, это может предоставить более подробную информацию, чтобы вы могли избежать относительно неуклюжего .hg
пути импорта:
Если путь импорта не является известным сайтом, на котором размещен код, а также отсутствует квалификатор управления версиями, инструмент go пытается получить импорт через https / http и ищет тег <meta> в HTML <head> документа.
Если вы реализуете <meta>
ответ на страницу запроса, прочитайте все остальное, потому что далее говорится:
При использовании модулей распознается дополнительный вариант мета-тега go-import, который предпочтительнее, чем те, которые перечислены в системах управления версиями. Этот вариант использует «mod» в качестве vcs в значении содержимого, как в:
<meta name="go-import" content="example.org mod https://code.org/moduleproxy">
Этот тег означает извлечение модулей с путями, начинающимися с example.org из модуля прокси, доступного по URL https://code.org/moduleproxy . Подробности о протоколе прокси см. в разделе «go help goproxy».