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

[インデックス 12759] ファイルの概要

このコミットは、Go言語のバイナリ配布物から、もはや配布に含めるべきではないと判断されたcodereview関連のファイルを削除するための変更です。具体的には、Goのビルドプロセスにおいて、配布物作成前にクリーンアップされるファイルリストにlib/codereviewを追加しています。

コミット

  • コミットハッシュ: 0c58eff0b6ff3ed72f1799cd9dd9c3397387656b
  • 作者: Andrew Gerrand adg@golang.org
  • コミット日時: 2012年3月27日 火曜日 10:38:10 +1100
  • コミットメッセージ:
    misc/dist: don't ship codereview either
    
    R=golang-dev, dsymonds
    CC=golang-dev
    https://golang.org/cl/5917043
    

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/0c58eff0b6ff3ed72f1799cd9dd9c3397387656b

元コミット内容

commit 0c58eff0b6ff3ed72f1799cd9dd9c3397387656b
Author: Andrew Gerrand <adg@golang.org>
Date:   Tue Mar 27 10:38:10 2012 +1100

    misc/dist: don't ship codereview either
    
    R=golang-dev, dsymonds
    CC=golang-dev
    https://golang.org/cl/5917043
---
 misc/dist/bindist.go | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/misc/dist/bindist.go b/misc/dist/bindist.go
index b3265e558e..05db8e7bbd 100644
--- a/misc/dist/bindist.go
+++ b/misc/dist/bindist.go
@@ -44,7 +44,8 @@ const (
 )
 
 var preBuildCleanFiles = []string{\
-\t"misc/dashboard/godashboard", // old python code
+\t"lib/codereview",
+\t"misc/dashboard/godashboard",
 \t"src/cmd/cov",
 \t"src/cmd/prof",
 \t"src/pkg/exp",

変更の背景

このコミットの背景には、Go言語の公式配布物(バイナリディストリビューション)のサイズと内容を最適化するという目的があります。Goプロジェクトは、開発の初期段階から様々な実験的なツールやユーティリティを含んでいましたが、時間の経過とともに、それらの一部は不要になったり、より新しいツールに置き換えられたり、あるいは配布物には含めるべきではないと判断されるようになりました。

codereviewは、Goプロジェクトが初期に利用していたコードレビューシステムに関連するツールやライブラリを指していると考えられます。Goプロジェクトは、Googleが開発したGerritというコードレビューシステムをベースにした独自のインスタンス(golang.org/cl)を使用しています。初期には、このシステムと連携するためのクライアントサイドのツールや、関連するライブラリがGoのソースツリー内に存在していた可能性があります。

コミットメッセージの"misc/dashboard/godashboard", // old python codeというコメントから、godashboardが古いPythonコードであり、既に配布物から除外対象となっていたことがわかります。同様に、codereviewも、もはやGoの公式配布物には含める必要がない、あるいは含めるべきではないと判断されたため、クリーンアップリストに追加されました。これは、配布物のフットプリントを減らし、ユーザーがダウンロードするパッケージに不要なファイルが含まれないようにするための保守的な措置です。

前提知識の解説

Goプロジェクトのディレクトリ構造

Go言語のソースコードリポジトリは、特定の慣習に従ったディレクトリ構造を持っています。

  • src/: Goの標準ライブラリのソースコードや、Goツールチェインのコマンド(go build, go runなど)のソースコードが含まれます。
  • cmd/: Goツールチェインの各コマンドのソースコードが含まれます。例えば、src/cmd/covはカバレッジツール、src/cmd/profはプロファイリングツールに関連します。
  • pkg/: コンパイルされたパッケージのアーカイブが格納される場所ですが、ソースツリー内では標準ライブラリのパッケージソースもここに配置されます。src/pkg/expは実験的なパッケージを意味します。
  • misc/: Goプロジェクトに関連する様々な雑多なファイル、スクリプト、ツール、ドキュメントなどが含まれます。misc/distは配布物作成に関連するスクリプトや設定を格納する場所です。
  • lib/: 外部ライブラリや、Goプロジェクト内で使用されるがGo言語で書かれていない(あるいはGoの標準ライブラリの一部ではない)コードが置かれることがあります。このコミットで言及されているlib/codereviewは、Goのコードレビューシステムに関連する非Go言語のコードや、Goの配布物には含めるべきではない特定のライブラリを指している可能性が高いです。

Goのバイナリ配布物 (misc/dist/bindist.go)

misc/dist/bindist.goは、Go言語の公式バイナリ配布物を作成するプロセスの一部を担うGoプログラムです。Goプロジェクトは、様々なオペレーティングシステムとアーキテクチャ向けにコンパイル済みのGoツールチェインと標準ライブラリを提供しています。これらの配布物を作成する際には、最終的なパッケージに含めるべきではない一時ファイル、ビルドアーティファクト、開発用ツール、古いコードなどをクリーンアップする必要があります。

bindist.goのようなスクリプトは、このクリーンアップとパッケージングのロジックを定義し、配布物の整合性と効率性を保証します。preBuildCleanFilesのようなリストは、ビルドプロセスが開始される前、または配布物がパッケージ化される前に削除されるべきファイルやディレクトリのパスを指定するために使用されます。

Goのコードレビューシステム (Gerrit)

Goプロジェクトは、Googleが開発したオープンソースのコードレビューシステムであるGerritをベースにした独自のインスタンス(golang.org/cl)を使用しています。GerritはGitリポジトリと連携し、変更セット(チェンジリスト、CL)を単位としてコードレビューを行います。開発者は変更をGerritにアップロードし、レビューアがその変更を承認すると、Gitリポジトリにマージされます。

https://golang.org/cl/5917043というリンクは、このコミットがGerritシステム上のチェンジリストID 5917043としてレビューされたことを示しています。これは、Goプロジェクトにおける標準的な開発ワークフローの一部です。

技術的詳細

このコミットの技術的な核心は、misc/dist/bindist.goファイル内のpreBuildCleanFilesというGo言語のスライス(配列)の変更にあります。

preBuildCleanFilesは、Goのバイナリ配布物を作成する際に、ビルドプロセスが開始される前に削除されるべきファイルパスやディレクトリパスのリストを文字列として保持しています。このリストにパスを追加するということは、そのパスに存在するファイルやディレクトリが、最終的な配布物には含まれないようにクリーンアップされることを意味します。

変更前は、このリストには既に"misc/dashboard/godashboard"が含まれていました。これはコメントにあるように「古いPythonコード」であり、配布物から除外されていました。

今回の変更では、新たに"lib/codereview"がこのリストに追加されました。これにより、Goの配布物をビルドする際に、lib/codereviewというパスに存在するファイルやディレクトリが自動的に削除されるようになります。これは、codereviewに関連するコードが、もはやGoの公式配布物には不要である、あるいは含めるべきではないという判断が下されたことを示しています。

この種のクリーンアップは、配布物のサイズを最小限に抑え、ユーザーがダウンロードするパッケージに不要な依存関係や古いコードが含まれないようにするために重要です。また、セキュリティ上の理由や、特定のツールがもはやサポートされていない場合に、それらを配布物から除外するためにも行われます。

コアとなるコードの変更箇所

--- a/misc/dist/bindist.go
+++ b/misc/dist/bindist.go
@@ -44,7 +44,8 @@ const (
 )
 
 var preBuildCleanFiles = []string{\
-\t"misc/dashboard/godashboard", // old python code
+\t"lib/codereview",
+\t"misc/dashboard/godashboard",
 \t"src/cmd/cov",
 \t"src/cmd/prof",
 \t"src/pkg/exp",

コアとなるコードの解説

このコミットにおける唯一のコード変更は、misc/dist/bindist.goファイル内のpreBuildCleanFilesというGo言語の文字列スライスに、新しい要素"lib/codereview"を追加したことです。

  • 変更前:

    var preBuildCleanFiles = []string{
    	"misc/dashboard/godashboard", // old python code
    	"src/cmd/cov",
    	"src/cmd/prof",
    	"src/pkg/exp",
    }
    

    この時点では、misc/dashboard/godashboard(古いPythonコード)が配布物から除外される対象としてリストされていました。

  • 変更後:

    var preBuildCleanFiles = []string{
    	"lib/codereview",
    	"misc/dashboard/godashboard",
    	"src/cmd/cov",
    	"src/cmd/prof",
    	"src/pkg/exp",
    }
    

    変更後、"lib/codereview"preBuildCleanFilesスライスの先頭に追加されました。これにより、Goのバイナリ配布物を生成するビルドプロセスにおいて、lib/codereviewというパスに存在するファイルやディレクトリが、misc/dashboard/godashboardなどと同様に、配布物に含まれる前に削除される対象となりました。

この変更は、Goの配布物の内容を管理し、不要なコンポーネントや古いコンポーネントが最終的なユーザー向けパッケージに含まれないようにするための、保守的なメンテナンス作業の一環です。

関連リンク

参考にした情報源リンク

  • Go言語のソースコードリポジトリ構造に関する一般的な情報
  • Gerrit コードレビューシステムに関する一般的な情報
  • Goプロジェクトの過去の議論やコミット履歴(codereviewgodashboardの文脈を理解するため)
    • (具体的なURLは特定できませんでしたが、GoプロジェクトのメーリングリストやIssueトラッカーで関連する議論が見られる可能性があります。)
  • misc/dist/bindist.goファイルの役割に関するGoプロジェクトのドキュメントやコメント。
    • (このファイル自体がGoのビルドプロセスの一部であり、その役割はコードのコメントやGoのビルドシステムに関するドキュメントで説明されています。)

[インデックス 12759] ファイルの概要

このコミットは、Go言語のバイナリ配布物から、もはや配布に含めるべきではないと判断されたcodereview関連のファイルを削除するための変更です。具体的には、Goのビルドプロセスにおいて、配布物作成前にクリーンアップされるファイルリストにlib/codereviewを追加しています。

コミット

  • コミットハッシュ: 0c58eff0b6ff3ed72f1799cd9dd9c3397387656b
  • 作者: Andrew Gerrand adg@golang.org
  • コミット日時: 2012年3月27日 火曜日 10:38:10 +1100
  • コミットメッセージ:
    misc/dist: don't ship codereview either
    
    R=golang-dev, dsymonds
    CC=golang-dev
    https://golang.org/cl/5917043
    

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/0c58eff0b6ff3ed72f1799cd9dd9c3397387656b

元コミット内容

commit 0c58eff0b6ff3ed72f1799cd9dd9c3397387656b
Author: Andrew Gerrand <adg@golang.org>
Date:   Tue Mar 27 10:38:10 2012 +1100

    misc/dist: don't ship codereview either
    
    R=golang-dev, dsymonds
    CC=golang-dev
    https://golang.org/cl/5917043
---
 misc/dist/bindist.go | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/misc/dist/bindist.go b/misc/dist/bindist.go
index b3265e558e..05db8e7bbd 100644
--- a/misc/dist/bindist.go
+++ b/misc/dist/bindist.go
@@ -44,7 +44,8 @@ const (
 )
 
 var preBuildCleanFiles = []string{\
-\t"misc/dashboard/godashboard", // old python code
+\t"lib/codereview",
+\t"misc/dashboard/godashboard",
 \t"src/cmd/cov",
 \t"src/cmd/prof",
 \t"src/pkg/exp",

変更の背景

このコミットの背景には、Go言語の公式配布物(バイナリディストリビューション)のサイズと内容を最適化するという目的があります。Goプロジェクトは、開発の初期段階から様々な実験的なツールやユーティリティを含んでいましたが、時間の経過とともに、それらの一部は不要になったり、より新しいツールに置き換えられたり、あるいは配布物には含めるべきではないと判断されるようになりました。

codereviewは、Goプロジェクトが初期に利用していたコードレビューシステムに関連するツールやライブラリを指しています。Goプロジェクトは、Googleが開発したGerritというコードレビューシステムをベースにした独自のインスタンス(golang.org/cl)を使用しています。初期には、このシステムと連携するためのクライアントサイドのツールや、関連するライブラリがGoのソースツリー内に存在していました。特に、git-codereviewというツールは、GoのコードレビューのためにGerritと連携し、「変更ブランチ」を管理し、レビューのためにコミットをプッシュするために開発されました。lib/codereviewは、このgit-codereviewツールや、Gerritとの連携に必要なその他のコンポーネントの一部であった可能性が高いです。

コミットメッセージの"misc/dashboard/godashboard", // old python codeというコメントから、godashboardが古いPythonコードであり、既に配布物から除外対象となっていたことがわかります。同様に、codereviewも、もはやGoの公式配布物には含める必要がない、あるいは含めるべきではないと判断されたため、クリーンアップリストに追加されました。これは、配布物のフットプリントを減らし、ユーザーがダウンロードするパッケージに不要なファイルが含まれないようにするための保守的な措置です。Goプロジェクトは、gofmtgo vetのような組み込みツールによってコード品質を維持する哲学を持っており、時間の経過とともに、特定の外部ツールや古い内部ツールが不要になるのは自然な流れです。

前提知識の解説

Goプロジェクトのディレクトリ構造

Go言語のソースコードリポジトリは、特定の慣習に従ったディレクトリ構造を持っています。

  • src/: Goの標準ライブラリのソースコードや、Goツールチェインのコマンド(go build, go runなど)のソースコードが含まれます。
  • cmd/: Goツールチェインの各コマンドのソースコードが含まれます。例えば、src/cmd/covはカバレッジツール、src/cmd/profはプロファイリングツールに関連します。
  • pkg/: コンパイルされたパッケージのアーカイブが格納される場所ですが、ソースツリー内では標準ライブラリのパッケージソースもここに配置されます。src/pkg/expは実験的なパッケージを意味します。
  • misc/: Goプロジェクトに関連する様々な雑多なファイル、スクリプト、ツール、ドキュメントなどが含まれます。misc/distは配布物作成に関連するスクリプトや設定を格納する場所です。
  • lib/: 外部ライブラリや、Goプロジェクト内で使用されるがGo言語で書かれていない(あるいはGoの標準ライブラリの一部ではない)コードが置かれることがあります。このコミットで言及されているlib/codereviewは、Goのコードレビューシステムに関連する非Go言語のコードや、Goの配布物には含めるべきではない特定のライブラリを指している可能性が高いです。

Goのバイナリ配布物 (misc/dist/bindist.go)

misc/dist/bindist.goは、Go言語の公式バイナリ配布物を作成するプロセスの一部を担うGoプログラムです。Goプロジェクトは、様々なオペレーティングシステムとアーキテクチャ向けにコンパイル済みのGoツールチェインと標準ライブラリを提供しています。これらの配布物を作成する際には、最終的なパッケージに含めるべきではない一時ファイル、ビルドアーティファクト、開発用ツール、古いコードなどをクリーンアップする必要があります。

bindist.goのようなスクリプトは、このクリーンアップとパッケージングのロジックを定義し、配布物の整合性と効率性を保証します。preBuildCleanFilesのようなリストは、ビルドプロセスが開始される前、または配布物がパッケージ化される前に削除されるべきファイルやディレクトリのパスを指定するために使用されます。

Goのコードレビューシステム (Gerritとgit-codereview)

Goプロジェクトは、Googleが開発したオープンソースのコードレビューシステムであるGerritをベースにした独自のインスタンス(golang.org/cl)を使用しています。GerritはGitリポジトリと連携し、変更セット(チェンジリスト、CL)を単位としてコードレビューを行います。開発者は変更をGerritにアップロードし、レビューアがその変更を承認すると、Gitリポジトリにマージされます。

https://golang.org/cl/5917043というリンクは、このコミットがGerritシステム上のチェンジリストID 5917043としてレビューされたことを示しています。これは、Goプロジェクトにおける標準的な開発ワークフローの一部です。

初期のGoプロジェクトでは、Gerritと連携するためのgit-codereviewというツールが使われていました。このツールは、Goのコードレビュープロセスを円滑にするために、変更ブランチの管理やコミットのプッシュなどを支援していました。lib/codereviewは、このgit-codereviewツールや、その依存関係となるライブラリ、あるいはGerritとの連携に必要なその他のコンポーネントを指していたと考えられます。時間の経過とともに、これらのツールがGoの配布物に含まれる必要がなくなったか、あるいはより効率的な方法で管理されるようになったため、配布物から除外されることになりました。

技術的詳細

このコミットの技術的な核心は、misc/dist/bindist.goファイル内のpreBuildCleanFilesというGo言語のスライス(配列)の変更にあります。

preBuildCleanFilesは、Goのバイナリ配布物を作成する際に、ビルドプロセスが開始される前に削除されるべきファイルパスやディレクトリパスのリストを文字列として保持しています。このリストにパスを追加するということは、そのパスに存在するファイルやディレクトリが、最終的な配布物には含まれないようにクリーンアップされることを意味します。

変更前は、このリストには既に"misc/dashboard/godashboard"が含まれていました。これはコメントにあるように「古いPythonコード」であり、配布物から除外されていました。

今回の変更では、新たに"lib/codereview"がこのリストに追加されました。これにより、Goの配布物をビルドする際に、lib/codereviewというパスに存在するファイルやディレクトリが自動的に削除されるようになります。これは、codereviewに関連するコードが、もはやGoの公式配布物には不要である、あるいは含めるべきではないという判断が下されたことを示しています。

この種のクリーンアップは、配布物のサイズを最小限に抑え、ユーザーがダウンロードするパッケージに不要な依存関係や古いコードが含まれないようにするために重要です。また、セキュリティ上の理由や、特定のツールがもはやサポートされていない場合に、それらを配布物から除外するためにも行われます。

コアとなるコードの変更箇所

--- a/misc/dist/bindist.go
+++ b/misc/dist/bindist.go
@@ -44,7 +44,8 @@ const (
 )
 
 var preBuildCleanFiles = []string{\
-\t"misc/dashboard/godashboard", // old python code
+\t"lib/codereview",
+\t"misc/dashboard/godashboard",
 \t"src/cmd/cov",
 \t"src/cmd/prof",
 \t"src/pkg/exp",

コアとなるコードの解説

このコミットにおける唯一のコード変更は、misc/dist/bindist.goファイル内のpreBuildCleanFilesというGo言語の文字列スライスに、新しい要素"lib/codereview"を追加したことです。

  • 変更前:

    var preBuildCleanFiles = []string{
    	"misc/dashboard/godashboard", // old python code
    	"src/cmd/cov",
    	"src/cmd/prof",
    	"src/pkg/exp",
    }
    

    この時点では、misc/dashboard/godashboard(古いPythonコード)が配布物から除外される対象としてリストされていました。

  • 変更後:

    var preBuildCleanFiles = []string{
    	"lib/codereview",
    	"misc/dashboard/godashboard",
    	"src/cmd/cov",
    	"src/cmd/prof",
    	"src/pkg/exp",
    }
    

    変更後、"lib/codereview"preBuildCleanFilesスライスの先頭に追加されました。これにより、Goのバイナリ配布物を生成するビルドプロセスにおいて、lib/codereviewというパスに存在するファイルやディレクトリが、misc/dashboard/godashboardなどと同様に、配布物に含まれる前に削除される対象となりました。

この変更は、Goの配布物の内容を管理し、不要なコンポーネントや古いコンポーネントが最終的なユーザー向けパッケージに含まれないようにするための、保守的なメンテナンス作業の一環です。

関連リンク

参考にした情報源リンク

  • Go言語のソースコードリポジトリ構造に関する一般的な情報
  • Gerrit コードレビューシステムに関する一般的な情報
  • Goプロジェクトの過去の議論やコミット履歴(codereviewgodashboardの文脈を理解するため)
  • misc/dist/bindist.goファイルの役割に関するGoプロジェクトのドキュメントやコメント。
  • Goのコードレビューツールの歴史に関するWeb検索結果