Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 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 フラグの存在とその目的を理解できるようにするために不可欠でした。

関連リンク

参考にした情報源リンク

[インデックス 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 フラグの存在とその目的を理解できるようにするために不可欠でした。

関連リンク

参考にした情報源リンク