3

goパッケージ用にローカルの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-packagesMercurialリポジトリを含むディレクトリはどこにありますかpackagename

しかし、まだgo get server.example.com/go-packages/packagename機能していません。

4

1 に答える 1

4

この問題(および添付のコードレビュー)とこのスレッドを見た後:

  • 「import-prefixhgrepo-root」が正しい形式に従っていることを確認してください
    • import-alias-prefixは、「」でフェッチされるパッケージのプレフィックスまたは完全一致である必要がありますgo get
    • full-repo-rootは、スキームを含み、" "修飾子を含まないリポジトリへの完全なURLルートである必要があります。.vcs
    • vcsgit」、「hg」、「svn」などのいずれかです。
  • からのページフェッチhttps://<import>?go-get=1 が実際にあなたのindex.htmlページであることを確認してください(たとえば、これがファイルで設定されている場合は、index.htm他のDirectoryIndexディレクティブではありません)httpd.conf

import-alias-prefixがインポートと完全に一致しない場合、宣言されたルート( ドメインのルートである必要はありません)で別のHTTPフェッチが実行されます。

たとえば、「camlistore.org/pkg/blobref」がHTMLヘッドで宣言していると仮定します。

<meta name="go-import" content="camlistore.org git https://camlistore.org/r/p/camlistore" />

... それから:

$ go get camlistore.org/pkg/blobref

...次のURLを調べます。

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

<meta name="go-import" content="camlistore.org git https://camlistore.org/r/p/camlistore" />

...そしてそれを信頼し、ディスク上//camlistore.org/r/p/camlistore の「」のインポートパスでgitをチェックアウトします。camlistore.org

于 2012-09-13T11:00:13.747 に答える