【问题标题】:How to import using mercurial with SSH?如何通过 SSH 使用 mercurial 导入?
【发布时间】:2020-09-28 02:38:50
【问题描述】:

是否可以通过 ssh 使用 mercurial 导入模块?

我发现很少使用 mercurial 和 go,而我发现的很少是 http。

【问题讨论】:

    标签: go mercurial


    【解决方案1】:

    简短的回答是肯定的。

    go help importpath 或可用here 显示的文本描述了如何设置导入路径以暗示特定的版本控制系统。有些网站是事先知道的:

    一些常见的代码托管网站有特殊的语法:
    [列表被剪断,但 GitHub 暗示使用 Git 协议,Launchpad 暗示 Bazaar 等等]

    对于托管在其他服务器上的代码,导入路径可以使用版本控制类型进行限定,或者 go 工具可以通过 https/http 动态获取导入路径,并从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 导入器的source code 包含详细信息。 Mercurial 存储库导入先尝试https,然后再尝试ssh

    如果可以使用<meta>标签,那个可以提供更多细节,这样就可以避免导入路径中比较笨拙的.hg

    如果导入路径不是已知的代码托管站点并且也缺少版本控制限定符,则 go 工具会尝试通过 https/http 获取导入并在文档的 HTML

    中查找 标记。

    如果您正在对请求页面执行<meta> 响应,请阅读所有的其余部分,因为这继续说:

    使用模块时,go-import 元标记的附加变体被识别,并且比那些列出版本控制系统的系统更受欢迎。该变体使用“mod”作为内容值中的 vcs,如下所示:

    <meta name="go-import" content="example.org mod https://code.org/moduleproxy">
    

    此标记表示从 URL https://code.org/moduleproxy 上可用的模块代理获取路径以 example.org 开头的模块。有关代理协议的详细信息,请参阅“go help goproxy”。

    【讨论】:

      猜你喜欢
      • 2019-02-17
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 1970-01-01
      相关资源
      最近更新 更多