为Go包设置Mercurial存储库

时间:2012-09-13 10:21:17

标签: mercurial go

我正在努力为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>

更新2

我看到,我的内容错误(复制粘贴错误)现在我将其更改为:

<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无效。

1 个答案:

答案 0 :(得分:4)

查看this issue(以及附件code review)和this thread后:

  • 确保您的“import-prefix hg repo-root”遵循正确的格式
    • import-alias-prefix必须是前缀或完全匹配 使用“go get”获取包。
    • full-repo-root必须是包含存储库的完整URL根目录 方案和包含“.vcs”限定符。
    • vcs是“git”,“hg”,“svn”之一等。
  • 如果在{{1}中设置此页面,请确保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”导入路径上。