[インデックス 10993] ファイルの概要
コミット
このコミットは、Go言語のコマンドラインツール cmd/go
における go help remote
コマンドの出力内容を更新し、Google CodeのURL形式を修正するものです。また、go list
コマンドの出力例も同様に更新されています。
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/e8ae29588d87e931e4c2848f3fe76270c9c70e7d
元コミット内容
cmd/go: update "go help remote" to use correct Google Code urls
R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5489114
変更の背景
このコミットは2011年に行われたものであり、当時のGoogle Codeのプロジェクトホスティングサービスにおける推奨されるURL形式への変更を反映しています。Go言語のパッケージ管理システムは、インポートパスとしてURLを使用するという特徴があります。そのため、go get
コマンドなどが正しく機能し、ユーザーがGoogle Code上のリポジトリを適切に参照できるように、Goツール自身が提供するヘルプドキュメントや出力例も最新かつ正確な情報を提供する必要がありました。
具体的には、以前の project.googlecode.com/
のような形式から、より標準的で一般的な code.google.com/p/project
という形式への移行が行われていました。この変更は、Google CodeのインフラストラクチャやURLルーティングの進化に伴うものであり、Goツールがその変化に追従し、ユーザーに誤った情報を提供しないようにするためのメンテナンスの一環です。
なお、Google Codeは2015年にサービスを終了しており、現在ではこれらのURLは直接機能しません。このコミットは、Google Codeが活発に利用されていた時期のGoツールの正確性を保つための歴史的な変更点として理解されます。
前提知識の解説
Go言語のパッケージ管理とインポートパス
Go言語では、パッケージのインポートパスは通常、そのパッケージのソースコードがホストされているリポジトリのURLに基づいています。例えば、import "github.com/user/repo/package"
のように記述します。go get
コマンドは、このインポートパスを解析して、対応するリポジトリからソースコードをダウンロードし、ローカルの GOPATH
に配置します。
Google Code
Google Codeは、Googleが提供していたオープンソースプロジェクトのホスティングサービスです。バージョン管理システムとしてGit、Mercurial、Subversionをサポートし、プロジェクトのソースコード、バグトラッカー、Wikiなどを提供していました。Go言語の初期の多くのプロジェクトもGoogle Code上でホストされていました。
go help remote
コマンド
go help remote
コマンドは、Go言語のツールがサポートするリモートリポジトリのインポートパスの慣例や例について説明するヘルプドキュメントを表示します。これは、ユーザーが外部のパッケージをインポートする際に、どのようなURL形式を使用すべきかを理解するのに役立ちます。
go list
コマンド
go list
コマンドは、指定されたパッケージに関する情報を表示します。デフォルトでは、パッケージ名とファイルシステム上の場所を出力します。この出力例も、ユーザーがGoパッケージの構造やローカルでの配置を理解する上で重要な情報源となります。
Vanity Import Paths (補足)
Google Codeの閉鎖後、Goコミュニティでは「Vanity Import Paths」という概念が推奨されるようになりました。これは、golang.org/x/...
のように、実際のホスティングサービスに依存しないカスタムドメインをインポートパスとして使用し、そのドメインのHTMLに go-import
メタタグを埋め込むことで、go get
が実際のソースコードリポジトリの場所を解決できるようにする仕組みです。これにより、ホスティングサービスが変更されても、インポートパス自体を変更する必要がなくなり、依存関係の「リンク切れ」を防ぐことができます。このコミットが行われた2011年時点では、Vanity Import Pathsはまだ一般的ではありませんでした。
技術的詳細
このコミットの技術的な核心は、Go言語のツールがユーザーに提示する情報(ヘルプドキュメントと出力例)の正確性を保つことにあります。
Goの cmd/go
ツールは、外部リポジトリからのパッケージ取得を容易にするために、特定のURLパターンを認識します。Google Codeの場合、プロジェクトのURL構造は code.google.com/p/プロジェクト名
という形式が標準でした。しかし、過去には project.googlecode.com/
のようなサブドメイン形式も存在したか、あるいはドキュメントが古い形式を参照していた可能性があります。
このコミットは、src/cmd/go/help.go
内の go help remote
の説明文と、src/cmd/go/list.go
内の go list
の出力例において、Google Codeのインポートパスの記述を、当時の最新かつ正しい code.google.com/p/project
形式に統一しています。これにより、ユーザーがGoのドキュメントを参照してGoogle Code上のプロジェクトをインポートしようとした際に、正しいパス形式を迷うことなく使用できるようになります。
特に help.go
の変更では、Git、Mercurial、Subversionといった異なるVCSの例が、VCSの種類に依存しない code.google.com/p/project
のルートパス形式に集約されています。これは、Google Codeが提供するVCSに関わらず、プロジェクトの識別子が code.google.com/p/
の後に続くという共通のルールを強調するものです。また、project.subrepository
のような形式の追加は、Google Codeが提供していたサブプロジェクトや特定のVCSリポジトリの構造をより正確に反映するためのものです。
この変更は、Goツールの内部的なロジックやGoogle Codeとの連携方法そのものを大きく変えるものではなく、あくまでユーザーインターフェース(ドキュメントと例)の改善に焦点を当てています。
コアとなるコードの変更箇所
src/cmd/go/help.go
と src/cmd/go/list.go
の2つのファイルが変更されています。
src/cmd/go/help.go
の変更点
go help remote
コマンドの出力に含まれるGoogle Codeのインポートパスの例が修正されています。
具体的には、project.googlecode.com/
という形式から code.google.com/p/project
という形式に変更されています。
- 変更前:
--- a/src/cmd/go/help.go +++ b/src/cmd/go/help.go @@ -38,7 +38,7 @@ By convention, this is arranged by starting each path with a unique prefix that belongs to you. For example, paths used internally at Google all begin with 'google', and paths denoting remote repositories begin with the path to the code, -such as 'project.googlecode.com/'. +such as 'code.google.com/p/project'. `, } @@ -66,14 +66,11 @@ A few common code hosting sites have special syntax: Google Code Project Hosting (Git, Mercurial, Subversion) -\t\timport "project.googlecode.com/git" -\t\timport "project.googlecode.com/git/sub/directory" +\t\timport "code.google.com/p/project" +\t\timport "code.google.com/p/project/sub/directory" -\t\timport "project.googlecode.com/hg" -\t\timport "project.googlecode.com/hg/sub/directory" - -\t\timport "project.googlecode.com/svn/trunk" -\t\timport "project.googlecode.com/svn/trunk/sub/directory" +\t\timport "code.google.com/p/project.subrepository" +\t\timport "code.google.com/p/project.subrepository/sub/directory" Launchpad (Bazaar)
src/cmd/go/list.go
の変更点
go list
コマンドの出力例に含まれるGoogle Codeのパスが修正されています。
こちらも googlecode.com
を含む古い形式から code.google.com/p/
を含む新しい形式に更新されています。
- 変更前:
--- a/src/cmd/go/list.go +++ b/src/cmd/go/list.go @@ -18,9 +18,9 @@ List lists the packages named by the import paths, one per line. The default output shows the package name and file system location: - books /home/you/src/google-api-go-client.googlecode.com/hg/books/v1 - oauth /home/you/src/goauth2.googlecode.com/hg/oauth - sqlite /home/you/src/gosqlite.googlecode.com/hg/sqlite + books /home/you/src/code.google.com/p/google-api-go-client/books/v1 + oauth /home/you/src/src/code.google.com/p/goauth2/oauth + sqlite /home/you/src/code.google.com/p/sqlite The -f flag specifies an alternate format for the list, using the syntax of package template. The default output
コアとなるコードの解説
この変更は、Go言語のツールがGoogle Codeのプロジェクトを扱う際のパス解決ロジックそのものを変更するものではなく、主にユーザー向けのドキュメント(go help remote
)と出力例(go list
)を、当時のGoogle Codeの推奨されるURL形式に合わせるためのものです。これにより、ユーザーがGoのツールを使ってGoogle Code上のリポジトリをインポートしたり参照したりする際に、正しいパス形式を理解しやすくなります。
特に、help.go
の変更では、Git、Mercurial、Subversionといった異なるバージョン管理システム(VCS)に対応するGoogle Codeのインポートパスの例が、より汎用的な code.google.com/p/project
形式に統一されています。これは、Google Codeが提供するVCSの種類に関わらず、プロジェクトのルートパスが code.google.com/p/プロジェクト名
となることを反映しています。また、project.subrepository
のような形式も追加されており、これはGoogle Codeにおけるサブプロジェクトや特定のVCSリポジトリの構造をより正確に表現している可能性があります。
list.go
の変更は、go list
コマンドがパッケージのファイルシステム上の場所を表示する際の例を更新し、実際のGoogle CodeのURL構造に合致させることで、ユーザーがGoのパッケージがどのようにローカルに配置されるかをより正確に理解できるようにしています。
関連リンク
- Go言語の公式ドキュメント: https://go.dev/
- Google Code (サービス終了済み): https://code.google.com/ (現在はアーカイブページにリダイレクトされます)
- このコミットのGerrit Change-ID (CL): https://golang.org/cl/5489114
参考にした情報源リンク
- Web検索結果: "Google Code project hosting URL format change Go import path"
- texlution.com (https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEgxnw4QnFKGdRTBwVY5hD3KGnC20O4he8DDAtG4zeZf3wo9XVCYxQ5SOIFfUHDuHgKPDX4CZcIUi8clOJBqIhoCcDySUdbw6YdcgCgzmlYfCAh-uJkeYwZEokuB2LP8W-S8AMNXRifwEZtKURXxlHy0f94Ng==)
- go.dev (https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQExv7H0nmqKB1Ap5myqBnbUck-gzz2XNpVA5ucCFNCsV4sgItSxA-zmE83B9DQKzdRv8S5g13fJQvoBesg5IOrUxmrs_nNiuUIY8Uj7fW6oela4f-yyX_Q6Vj-_Ns5cxDA=)
- google.com (https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQHfxbPHyNMI5wmRA8cHAXXk9fwMswQnFwjtxb30P4PXIsjhTSRZgCXoBfYK75QlPQfgmf07tIS4OzQA_G4k9Z09WuvPJNUaFae22iwNRW6E5NS4x3sTghDqsUusMtIv_YkF6_GH_rKCouFC-HDU7RtffA14lH6udHDrxtmcPdgDeKHCSShLoDGAlFIAKZSImjY_LPTVufAJuRRLClo=)
- stackoverflow.com (https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQEdYsGspqg1zJpiJ6GMETTGyWOVW3E0RtT6_kclCwrSP7DwvAjfFKcqffiQyeT8JBOfOAvqXwcBA17h2K3HXK7kXiGntsWRKccoU2dtnGq2I2r8qTRLJyn3ZzLFWe0ky7cviXg8aD_xEYbyqH25le6T9i9x_8vhPA_bDgRyu8DgjhJ9Io7HSJl)
- github.com (https://vertexaisearch.cloud.google.com/grounding-api-redirect/AUZIYQGjB3_sxdBivvXpFMRBObkEqQcP2iuXLuIpMHP6NGN8GhGm7UMdVMLoFnuyqBTlFVnGaQbBrM02YdRQKMjihqIYae8f2D8gYLgrRDZDFBXM71WGhlA4HPkGuhTmcSZhO__pEbroEhGii_RoQ-Enfg==)
- コミット情報:
/home/orange/Project/comemo/commit_data/10993.txt