1 回答
TA贡献1784条经验 获得超8个赞
简短的回答是肯定的。
由 显示go help importpath
或在此处可用的文本描述了如何设置导入路径以暗示特定的版本控制系统。一些网站是预先知道的:
一些常见的代码托管网站有特殊的语法:
[列表被截断,但 GitHub 暗示使用 Git 协议,Launchpad 暗示 Bazaar,等等]对于托管在其他服务器上的代码,导入路径可以使用版本控制类型进行限定,或者 go 工具可以通过 https/http 动态获取导入路径,并从 HTML 中的 <meta> 标记中发现代码所在的位置。
因此,如果您无权访问或控制此类<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 获取导入并在文档的 HTML <head> 中查找 <meta> 标记。
如果您正在实现对<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”。
- 1 回答
- 0 关注
- 97 浏览
添加回答
举报