我正在努力为go包设置本地Mercurial存储库。
所有mercurial包目录都可以在以下URL下:
https://server.example.com/go-packages/
我可以通过以下方式克隆包:
hg clone https://server.example.com/go-packages/packagename
工作正常。
当我想使用go
命令行安装软件包时:
go get server.example.com/go-packages/packagename
我收到以下错误:
package server.example.com/go-packages/packagename: unrecognized import path "server.example.com/go-packages/packagename"
但是当我按照http://golang.org/cmd/go/:
中的说明进行操作时go get server.example.com/go-packages/packagename.hg
完美无缺。
在上面的文档中,他们讨论了<meta>
标志。所以我用以下条目创建了一个index.html:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="go-import" content="import-prefix hg repo-root">
<title>packagename</title>
</head>
<body>
<h1>packagename</h1>
</body>
</html>
当我做wget -O- https://server.example.com/go-packages/packagename/?go-get=1 --no-check-certificate
时,我得到:
!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="go-import" content="import-prefix hg repo-root">
<title>packagename</title>
</head>
<body>
<h1>packagename</h1>
</body>
</html>
我看到,我的内容错误(复制粘贴错误)现在我将其更改为:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="go-import" content="server.example.com/go-packages/packagename hg https://server.example.com/go-packages/packagename" />
<title>packagename</title>
</head>
<body>
<h1>packagename</h1>
</body>
</html>
其中go-packages
是包含mercurial存储库packagename
的目录。
但仍go get server.example.com/go-packages/packagename
无效。
答案 0 :(得分:4)
查看this issue(以及附件code review)和this thread后:
go get
”获取包。.vcs
”限定符。vcs
是“git
”,“hg
”,“svn
”之一等。https://<import>?go-get=1
的页面抓取确实是您index.html
页面(不是index.htm
或任何其他DirectoryIndex
指令例如文件)如果import-alias-prefix不是导入的完全匹配, 在声明的根处执行另一个HTTP提取(确实如此) 不需要成为域的根目录。
例如,假设“
httpd.conf
”声明 在HTML头中:camlistore.org/pkg/blobref
......然后:
<meta name="go-import" content="camlistore.org git https://camlistore.org/r/p/camlistore" />
...查看以下网址:
$ go get camlistore.org/pkg/blobref
最终它会在根(
https://camlistore.org/pkg/blobref?go-get=1 http://camlistore.org/pkg/blobref?go-get=1 https://camlistore.org/?go-get=1 http://camlistore.org/?go-get=1
)找到相同的camlistore.org/
:go-import
...并继续信任它,检查git
<meta name="go-import" content="camlistore.org git https://camlistore.org/r/p/camlistore" />
在磁盘上的“//camlistore.org/r/p/camlistore
”导入路径上。