Как импортировать с помощью mercurial с помощью SSH?

#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».