[インデックス 17251] ファイルの概要
このコミットは、Go言語の公式ドキュメント doc/go1.2.txt
を更新するものです。具体的には、go get
コマンドに -t
フラグが追加され、テスト依存関係をダウンロードできるようになったことに関する記述が追記されています。
コミット
commit 89ecedab26f2250eb4ffc4a7fcaef0583db5b9d9
Author: Andrew Gerrand <adg@golang.org>
Date: Thu Aug 15 08:13:38 2013 +1000
doc: update go1.2.txt
R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/12957044
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/89ecedab26f2250eb4ffc4a7fcaef0583db5b9d9
元コミット内容
--- a/doc/go1.2.txt
+++ b/doc/go1.2.txt
@@ -17,6 +17,7 @@ cmd/5l: add MOVBS, MOVHS etc for sub-word moves (CL 12682043).
cmd/cgo, cmd/go: support including C++ code with cgo (CL 8248043).
cmd/gc: make missing package error fatal (CL 12677043).
cmd/go: test coverage (CL 10413044).
+cmd/go: add -t flag to 'go get' to download test dependencies (CL 12566046).
archive/zip: add File.DataOffset accessor (CL 12784045).
bufio: add Reset methods to Reader and Writer (CL 12603049).
変更の背景
このコミットは、Go 1.2のリリースノートの一部である doc/go1.2.txt
を更新するものです。Go 1.2では、go get
コマンドに新しい -t
フラグが導入されました。このフラグは、パッケージのテストに必要な依存関係もダウンロードする機能を提供します。
従来の go get
コマンドは、指定されたパッケージとその実行に必要な依存関係のみをダウンロードしていました。しかし、Goプロジェクトでは、テストコードが本番コードとは異なる外部パッケージに依存することがよくあります。例えば、モックライブラリやテストユーティリティなどがこれに該当します。これらのテスト専用の依存関係は、通常 go get
の対象外であったため、開発者はテストを実行する前に手動でこれらの依存関係を解決する必要がありました。
-t
フラグの導入により、go get
はテストコードが import
しているパッケージも自動的にダウンロードするようになり、テスト環境のセットアップが大幅に簡素化されました。この変更は、Go開発者のワークフローを改善し、CI/CD環境でのテスト実行をよりスムーズにするための重要な機能強化でした。このコミットは、その新機能がGo 1.2の変更点として公式ドキュメントに記載されることを保証するためのものです。
前提知識の解説
go get
コマンド: Go言語のパッケージ管理ツールの一部であり、リモートリポジトリからGoパッケージをダウンロードし、インストールするために使用されます。通常、GOPATH
環境変数で指定されたワークスペースにソースコードを配置し、コンパイルして実行可能ファイルをGOBIN
に配置します。- Go Modules (Go 1.11以降): このコミットが作成されたGo 1.2の時点では、Go Modulesはまだ存在していませんでした。当時は
GOPATH
ベースのワークスペースが主流であり、依存関係の管理は主にgo get
とベンダーディレクトリ(vendor/
)によって行われていました。Go Modulesの導入後もgo get
は引き続き使用されますが、その動作はモジュール対応プロジェクトと非モジュールプロジェクトで異なります。このコミットの文脈では、GOPATH
ベースの動作が前提となります。 - テスト依存関係: Goのテストコード(
_test.go
で終わるファイル)は、本番コードとは独立した依存関係を持つことがあります。例えば、テストフレームワーク、アサーションライブラリ、モック生成ツールなどがこれに該当します。これらの依存関係は、アプリケーションのビルドや実行には不要ですが、テストのコンパイルと実行には必須です。 - Go 1.2: 2013年12月にリリースされたGo言語のメジャーバージョンアップです。このバージョンでは、ランタイムのパフォーマンス改善、新しい言語機能(例:
go tool cover
によるテストカバレッジ)、そしてgo
コマンドの機能強化など、多くの変更が加えられました。
技術的詳細
このコミット自体は、Goのツールチェインのコードを変更するものではなく、Go 1.2のリリースノートを記述したテキストファイル doc/go1.2.txt
に一行追加するものです。追加された行は、go get
コマンドの新しい -t
フラグについて言及しています。
go get -t
の機能は、内部的には go
コマンドの依存関係解決ロジックに拡張が加えられたことを意味します。具体的には、パッケージのビルドに必要な import
パスだけでなく、そのパッケージのテストファイル(*_test.go
)内で import
されているパスも解析し、それらのパッケージもリモートリポジトリから取得してローカルの GOPATH
に配置するようになります。
この機能は、特にCI/CDパイプラインにおいて非常に有用です。ビルドサーバー上でプロジェクトのテストを実行する際、go get -t ./...
のように実行することで、プロジェクト全体のテストに必要なすべての依存関係を一度に取得できるようになり、テスト環境のセットアップスクリプトを簡素化できます。
Go Modulesが導入された現在(Go 1.11以降)では、go get -t
の動作は少し異なります。モジュール対応プロジェクトでは、go.mod
ファイルに require
ディレクティブで依存関係が記述されますが、テスト専用の依存関係は require
に含まれないことがあります。go get -t
は、go.mod
に記述されていないテスト依存関係を go.mod
に追加し、ダウンロードする役割を担います。また、go mod tidy
コマンドもテスト依存関係を考慮して go.mod
をクリーンアップする機能を持っています。しかし、このコミットが作成された時点では、これらのモジュール関連の概念は存在しませんでした。
コアとなるコードの変更箇所
変更は doc/go1.2.txt
ファイルの1行の追加のみです。
--- a/doc/go1.2.txt
+++ b/doc/go1.2.txt
@@ -17,6 +17,7 @@ cmd/5l: add MOVBS, MOVHS etc for sub-word moves (CL 12682043).
cmd/cgo, cmd/go: support including C++ code with cgo (CL 8248043).
cmd/gc: make missing package error fatal (CL 12677043).
cmd/go: test coverage (CL 10413044).
+cmd/go: add -t flag to 'go get' to download test dependencies (CL 12566046).
archive/zip: add File.DataOffset accessor (CL 12784045).
bufio: add Reset methods to Reader and Writer (CL 12603049).
具体的には、cmd/go: add -t flag to 'go get' to download test dependencies (CL 12566046).
という行が追加されています。これは、Go 1.2で導入された go get -t
フラグの機能について簡潔に説明しています。CL 12566046
は、この機能自体を実装したチェンジリスト(GoのコードレビューシステムGerritにおける変更の識別子)を指します。
コアとなるコードの解説
このコミット自体には、Goのランタイムやツールの機能的なコード変更は含まれていません。単に、既存の機能変更(go get -t
の導入)を公式ドキュメントに反映させるためのものです。
追加された行は、以下の情報を伝えています。
cmd/go
:go
コマンドに関連する変更であることを示します。add -t flag to 'go get'
:go get
コマンドに-t
という新しいフラグが追加されたことを明示しています。to download test dependencies
: このフラグの目的が、テストに必要な依存関係をダウンロードすることであることを説明しています。(CL 12566046)
: この機能の実装が、チェンジリスト12566046
で行われたことを示しています。このチェンジリストを追跡することで、実際のコード変更の詳細を確認できます。
このドキュメントの更新は、Go 1.2のリリース時にユーザーが新しい go get -t
フラグの存在とその目的を理解できるようにするために不可欠でした。
関連リンク
- Go 1.2 Release Notes: このコミットが更新しているドキュメントの最終版は、Go 1.2の公式リリースノートの一部となります。
- CL 12566046 (Original Change for
go get -t
):go get -t
フラグを実装した実際のチェンジリスト。
参考にした情報源リンク
- Go言語の公式ドキュメント: https://go.dev/doc/
- Go言語のチェンジリスト(Gerrit): https://go.dev/cl/
go get
コマンドのドキュメント: https://go.dev/cmd/go/#hdr-Download_and_install_packages_and_dependencies- Go Modulesに関する情報 (Go 1.11以降の文脈): https://go.dev/blog/using-go-modules
- Go 1.2のリリースアナウンスメントや関連ブログ記事 (当時の情報源):
- Go 1.2 is released (Go Blog)
- Go 1.2 Release Notes (GitHub) (このコミットが変更しているファイルのリポジトリ上のパス)
[インデックス 17251] ファイルの概要
このコミットは、Go言語の公式ドキュメント doc/go1.2.txt
を更新するものです。具体的には、go get
コマンドに -t
フラグが追加され、テスト依存関係をダウンロードできるようになったことに関する記述が追記されています。
コミット
commit 89ecedab26f2250eb4ffc4a7fcaef0583db5b9d9
Author: Andrew Gerrand <adg@golang.org>
Date: Thu Aug 15 08:13:38 2013 +1000
doc: update go1.2.txt
R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/12957044
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/89ecedab26f2250eb4ffc4a7fcaef0583db5b9d9
元コミット内容
--- a/doc/go1.2.txt
+++ b/doc/go1.2.txt
@@ -17,6 +17,7 @@ cmd/5l: add MOVBS, MOVHS etc for sub-word moves (CL 12682043).
cmd/cgo, cmd/go: support including C++ code with cgo (CL 8248043).
cmd/gc: make missing package error fatal (CL 12677043).
cmd/go: test coverage (CL 10413044).
+cmd/go: add -t flag to 'go get' to download test dependencies (CL 12566046).
archive/zip: add File.DataOffset accessor (CL 12784045).
bufio: add Reset methods to Reader and Writer (CL 12603049).
変更の背景
このコミットは、Go 1.2のリリースノートの一部である doc/go1.2.txt
を更新するものです。Go 1.2では、go get
コマンドに新しい -t
フラグが導入されました。このフラグは、パッケージのテストに必要な依存関係もダウンロードする機能を提供します。
従来の go get
コマンドは、指定されたパッケージとその実行に必要な依存関係のみをダウンロードしていました。しかし、Goプロジェクトでは、テストコードが本番コードとは異なる外部パッケージに依存することがよくあります。例えば、モックライブラリやテストユーティリティなどがこれに該当します。これらのテスト専用の依存関係は、通常 go get
の対象外であったため、開発者はテストを実行する前に手動でこれらの依存関係を解決する必要がありました。
-t
フラグの導入により、go get
はテストコードが import
しているパッケージも自動的にダウンロードするようになり、テスト環境のセットアップが大幅に簡素化されました。この変更は、Go開発者のワークフローを改善し、CI/CD環境でのテスト実行をよりスムーズにするための重要な機能強化でした。このコミットは、その新機能がGo 1.2の変更点として公式ドキュメントに記載されることを保証するためのものです。
前提知識の解説
go get
コマンド: Go言語のパッケージ管理ツールの一部であり、リモートリポジトリからGoパッケージをダウンロードし、インストールするために使用されます。通常、GOPATH
環境変数で指定されたワークスペースにソースコードを配置し、コンパイルして実行可能ファイルをGOBIN
に配置します。- Go Modules (Go 1.11以降): このコミットが作成されたGo 1.2の時点では、Go Modulesはまだ存在していませんでした。当時は
GOPATH
ベースのワークスペースが主流であり、依存関係の管理は主にgo get
とベンダーディレクトリ(vendor/
)によって行われていました。Go Modulesの導入後もgo get
は引き続き使用されますが、その動作はモジュール対応プロジェクトと非モジュールプロジェクトで異なります。このコミットの文脈では、GOPATH
ベースの動作が前提となります。 - テスト依存関係: Goのテストコード(
_test.go
で終わるファイル)は、本番コードとは独立した依存関係を持つことがあります。例えば、テストフレームワーク、アサーションライブラリ、モック生成ツールなどがこれに該当します。これらの依存関係は、アプリケーションのビルドや実行には不要ですが、テストのコンパイルと実行には必須です。 - Go 1.2: 2013年12月にリリースされたGo言語のメジャーバージョンアップです。このバージョンでは、ランタイムのパフォーマンス改善、新しい言語機能(例:
go tool cover
によるテストカバレッジ)、そしてgo
コマンドの機能強化など、多くの変更が加えられました。
技術的詳細
このコミット自体は、Goのツールチェインのコードを変更するものではなく、Go 1.2のリリースノートを記述したテキストファイル doc/go1.2.txt
に一行追加するものです。追加された行は、go get
コマンドの新しい -t
フラグについて言及しています。
go get -t
の機能は、内部的には go
コマンドの依存関係解決ロジックに拡張が加えられたことを意味します。具体的には、パッケージのビルドに必要な import
パスだけでなく、そのパッケージのテストファイル(*_test.go
)内で import
されているパスも解析し、それらのパッケージもリモートリポジトリから取得してローカルの GOPATH
に配置するようになります。
この機能は、特にCI/CDパイプラインにおいて非常に有用です。ビルドサーバー上でプロジェクトのテストを実行する際、go get -t ./...
のように実行することで、プロジェクト全体のテストに必要なすべての依存関係を一度に取得できるようになり、テスト環境のセットアップスクリプトを簡素化できます。
Go Modulesが導入された現在(Go 1.11以降)では、go get -t
の動作は少し異なります。モジュール対応プロジェクトでは、go.mod
ファイルに require
ディレクティブで依存関係が記述されますが、テスト専用の依存関係は require
に含まれないことがあります。go get -t
は、go.mod
に記述されていないテスト依存関係を go.mod
に追加し、ダウンロードする役割を担います。また、go mod tidy
コマンドもテスト依存関係を考慮して go.mod
をクリーンアップする機能を持っています。しかし、このコミットが作成された時点では、これらのモジュール関連の概念は存在しませんでした。
コアとなるコードの変更箇所
変更は doc/go1.2.txt
ファイルの1行の追加のみです。
--- a/doc/go1.2.txt
+++ b/doc/go1.2.txt
@@ -17,6 +17,7 @@ cmd/5l: add MOVBS, MOVHS etc for sub-word moves (CL 12682043).
cmd/cgo, cmd/go: support including C++ code with cgo (CL 8248043).
cmd/gc: make missing package error fatal (CL 12677043).
cmd/go: test coverage (CL 10413044).
+cmd/go: add -t flag to 'go get' to download test dependencies (CL 12566046).
archive/zip: add File.DataOffset accessor (CL 12784045).
bufio: add Reset methods to Reader and Writer (CL 12603049).
具体的には、cmd/go: add -t flag to 'go get' to download test dependencies (CL 12566046).
という行が追加されています。これは、Go 1.2で導入された go get -t
フラグの機能について簡潔に説明しています。CL 12566046
は、この機能自体を実装したチェンジリスト(GoのコードレビューシステムGerritにおける変更の識別子)を指します。
コアとなるコードの解説
このコミット自体には、Goのランタイムやツールの機能的なコード変更は含まれていません。単に、既存の機能変更(go get -t
の導入)を公式ドキュメントに反映させるためのものです。
追加された行は、以下の情報を伝えています。
cmd/go
:go
コマンドに関連する変更であることを示します。add -t flag to 'go get'
:go get
コマンドに-t
という新しいフラグが追加されたことを明示しています。to download test dependencies
: このフラグの目的が、テストに必要な依存関係をダウンロードすることであることを説明しています。(CL 12566046)
: この機能の実装が、チェンジリスト12566046
で行われたことを示しています。このチェンジリストを追跡することで、実際のコード変更の詳細を確認できます。
このドキュメントの更新は、Go 1.2のリリース時にユーザーが新しい go get -t
フラグの存在とその目的を理解できるようにするために不可欠でした。
関連リンク
- Go 1.2 Release Notes: このコミットが更新しているドキュメントの最終版は、Go 1.2の公式リリースノートの一部となります。
- CL 12566046 (Original Change for
go get -t
):go get -t
フラグを実装した実際のチェンジリスト。
参考にした情報源リンク
- Go言語の公式ドキュメント: https://go.dev/doc/
- Go言語のチェンジリスト(Gerrit): https://go.dev/cl/
go get
コマンドのドキュメント: https://go.dev/cmd/go/#hdr-Download_and_install_packages_and_dependencies- Go Modulesに関する情報 (Go 1.11以降の文脈): https://go.dev/blog/using-go-modules
- Go 1.2のリリースアナウンスメントや関連ブログ記事 (当時の情報源):
- Go 1.2 is released (Go Blog)
- Go 1.2 Release Notes (GitHub) (このコミットが変更しているファイルのリポジトリ上のパス)