サーバが頻繁に移動すると思われる場合は、vanity import pathを使用することをお勧めします。
バニティインポートパスを使用すると、所有するドメインのインポートパスにコードを保存して、コードが格納されている場所にリダイレクトすることができます。たとえば、Bitbucketでコードをホストしていて、将来移動する可能性があり、ドメインexample.net
を所有している場合は、import "example.net/myproject"
でインポートするようにコードをホストし、go get
ツールでコードをフェッチすることができますBitbucketから。これを行うには、あなたはそれがフォームのカスタムメタタグが含まれていたいドメイン上のドキュメントを提供する必要があります。
提供のBitbucketのURLのクローンを作成する
go get
をリダイレクトします
example.net/myproject
で次のようにHTMLファイルを提供する例えばので
<meta name="go-import" content="import-prefix vcs repo-root">
(それはあなた自身を含め、他のGitサービスにコースのポイントのもあります):
<meta name="go-import" content="example.net/myproject git https://bitbucket.org/myname/myproject.git">
は、これらのリダイレクトを提供するためにnginxのを設定するには、以下のような設定を使用することができます(myPackage
を交換し、プロジェクト名を持つURLもちろん、URL):
location ~ /myPackage/[a-z][a-z0-9]* {
if ($args = "go-get=1") {
add_header Content-Type text/html;
return 200 '<meta name="go-import" content="$host/myPackage git https://bitbucket.org/myName/myPackage.git">';
}
rewrite^https://mygithosting.example.org/myName/myPackage? permanent;
}
location ~ /myPackage$ {
if ($args = "go-get=1") {
add_header Content-Type text/html;
return 200 '<meta name="go-import" content="$host/myPackage git https://mygithosting.example.org/myName/myPackage.git">';
}
rewrite^https://mygithosting.example.org/myName/myPackage? permanent;
}
Gitサーバーを移動するたびに、メタタグのURLを変更するだけで済みます。
バニティインポートパスを使用してGitサーバーや他のユーザーから直接インポートするユーザーがいる場合は、このパスを正規のインポートパスとして設定することもできます。正規のインポートパスは、Goプログラムの1つのファイル内のpackage
行の特別なコメントとして指定されます(どちらのプログラムでも問題ありません)。彼らは、次のようになります。上記のコードは、実際にどこかにホストされていると、誰かがそれを直接インポートしようとした場合
import mypackage // import "example.com/mypackage"
今、
go get
は文句を言うでしょう:
$ mygithosting.example.org/myName/myPackageを取りに行きます パッケージmygithosting.example.org/myName/myPackage:ディレクトリー/go/mygithosting.example.org/myName/myPackage expects import "のコード。com/mypackage "
回答ありがとうございますが、アップロードしてワークスペース全体が良いとお考えですか? – Apin
おっと、申し訳ありませんが、私は最初の質問に対処できました。あなたの仕事場が成長するにつれて物事を管理するのが難しくなり、人々は仕事場を作ってそれを作るためにハックをしなければならなくなるだろうと言っています。通常の開発プロセス(グローバルなものではなく、誤ってGitにチェックインしたくない作業領域内のものが必要な場合)に適合します。 –