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

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

このコミットは、Go言語のダッシュボード(misc/dashboard)における外部パッケージのインストール数を記録する機能を元に戻す(undo)ものです。具体的には、以前のコミットで導入されたインストール数追跡機能が、一時的に見送られることになったため、関連するコードと設定が削除されています。

コミット

commit 52db02bef36de3c39f32cdcf059d6d45477ae449
Author: Andrew Gerrand <adg@golang.org>
Date:   Thu Mar 8 22:34:59 2012 +1100

    undo CL 5699082 / 6223c9fe432b
    
    We decided not to record installs, for now at least.
    
    ««« original CL description
    misc/dashboard: record install counts for external packages
    
    R=golang-dev, bradfitz
    CC=golang-dev
    https://golang.org/cl/5699082
    »»»
    
    R=golang-dev, dsymonds
    CC=golang-dev
    https://golang.org/cl/5790044

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

https://github.com/golang/go/commit/52db02bef36de3c39f32cdcf059d6d45477ae449

元コミット内容

このコミットは、以下の元のコミット(CL 5699082 / 6223c9fe432b)の変更を元に戻すものです。

misc/dashboard: record install counts for external packages

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5699082

元のコミットは、Go言語のダッシュボードに外部パッケージのインストール数を記録する機能を追加することを目的としていました。

変更の背景

コミットメッセージによると、「We decided not to record installs, for now at least.」(少なくとも今のところ、インストール数を記録しないことに決定した)という理由で、以前導入された外部パッケージのインストール数追跡機能が元に戻されました。これは、機能の導入が時期尚早である、あるいは実装方法や必要性について再検討が必要であると判断されたためと考えられます。

前提知識の解説

  • Go言語ダッシュボード (misc/dashboard): Goプロジェクトには、ビルドの状態、テスト結果、コミット履歴などを表示するためのダッシュボードが存在します。これは通常、Goの公式リポジトリの一部として管理され、Goのインフラストラクチャの健全性を監視する役割を担っています。このダッシュボードはGoogle App Engine上で動作していました。
  • Google App Engine (GAE): Googleが提供するPaaS(Platform as a Service)であり、ウェブアプリケーションやモバイルバックエンドを構築・デプロイするためのプラットフォームです。Go言語もサポートされており、app.yamlcron.yamlといった設定ファイルを使用してアプリケーションのデプロイやcronジョブの管理を行います。
  • go getコマンド: Go言語のパッケージ管理ツールであり、リモートリポジトリからGoパッケージをダウンロードし、ビルドしてインストールするために使用されます。このコミットで削除された機能は、go getによるパッケージインストール時に、そのインストール数をダッシュボードに報告するメカニズムを導入しようとしていたと考えられます。
  • CL (Change List): Gerritなどのコードレビューシステムで使われる用語で、一連の変更(コミット)をまとめたものです。GoプロジェクトではGerritがコードレビューに利用されており、https://golang.org/cl/の形式で各CLにアクセスできます。

技術的詳細

このコミットは、Goダッシュボードにおける外部パッケージのインストール数追跡機能を完全に削除しています。削除された主な機能と関連ファイルは以下の通りです。

  1. インストール数記録ロジック:
    • misc/dashboard/app/build/build.goから、Package構造体のInstallsInstallsByDayInstallsThisWeekといったインストール数関連のフィールドが削除されました。
    • これらのフィールドを更新するためのIncrementInstalls()UpdateInstallsThisWeek()dayCounts()といったメソッドも削除されました。これらは、日ごとのインストール数を記録し、過去30日間のデータを保持し、週ごとの合計を計算するロジックを含んでいました。
  2. パッケージインストールハンドラ:
    • misc/dashboard/app/build/pkg.goファイル全体が削除されました。このファイルは、go getコマンドなどからのインストールリクエストを受け付けるHTTPハンドラ(/install)と、週次インストール数を更新するためのcronジョブハンドラ(/install/cron)を含んでいました。
    • appengine/delayパッケージを使用して、インストール数の更新や週次集計を非同期で実行する機能も含まれていました。
    • 外部パッケージのインポートパスを検証するためのvalidPath関数や、VCS(バージョン管理システム)のパスを解析するためのvcsPath構造体、およびgoogleCodeVCScheckRootcheckURLといったヘルパー関数もこのファイルに含まれていました。これらは、GitHub、Bitbucket、Google Codeなどのリポジトリからパッケージがインストールされた際に、そのパスが有効であるかを確認するために使用されていました。
  3. App Engine設定:
    • misc/dashboard/app/app.yamlから、/install/install/cronへのルーティング設定が削除されました。これにより、これらのURLへのアクセスがアプリケーションレベルで無効化されました。
    • misc/dashboard/app/cron.yamlから、週次インストール数を更新するためのcronジョブ定義が削除されました。

これらの変更により、Goダッシュボードは外部パッケージのインストール数を追跡・記録する機能を完全に停止しました。

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

このコミットにおける主要な変更は、以下のファイルの削除と内容の変更です。

  • misc/dashboard/app/app.yaml:
    • /install/install/cronへのルーティングが削除されました。
  • misc/dashboard/app/build/build.go:
    • strconvパッケージのインポートが削除されました。
    • Package構造体からInstalls, InstallsByDay, InstallsThisWeekフィールドが削除されました。
    • IncrementInstalls(), UpdateInstallsThisWeek(), dayCounts()関数が削除されました。
  • misc/dashboard/app/build/pkg.go:
    • ファイル全体が削除されました。 このファイルには、インストールハンドラ、cronハンドラ、パッケージパス検証ロジックなどが含まれていました。
  • misc/dashboard/app/cron.yaml:
    • /install/cronを実行するcronジョブの定義が削除されました。

コアとなるコードの解説

削除されたmisc/dashboard/app/build/pkg.goファイルは、この機能の中核をなしていました。

  • installHandler: http.HandleFunc("/install", installHandler)として登録され、go getコマンドなどから送信されるパッケージインストールリクエストを受け付けていました。リクエストに含まれるパッケージパスを検証し、installLaterというappengine/delay関数を呼び出して、非同期でインストール数をインクリメントしていました。
  • installCronHandler: http.HandleFunc("/install/cron", installCronHandler)として登録され、cronジョブによって定期的に呼び出されていました。このハンドラは、すべての外部パッケージのキーを取得し、それぞれのパッケージに対してupdateWeeklyLaterというappengine/delay関数を呼び出し、週次インストール数を更新していました。
  • install関数: appengine/delayによって非同期で実行され、指定されたパッケージパスのインストール数をデータストア(Google App Engineのデータストレージ)上でインクリメントしていました。また、日ごとのインストール数を記録し、過去30日間のデータを保持するロジックも含まれていました。
  • updateWeekly関数: appengine/delayによって非同期で実行され、指定されたパッケージの週次インストール数を更新していました。
  • validPath関数: インストールリクエストで提供されたパッケージパスが有効なGoパッケージのインポートパスであるかを検証していました。GitHub、Bitbucket、Google Codeなどの主要なVCSプロバイダのパターンにマッチするかを確認し、必要に応じてHTTPリクエストを送信してリポジトリの存在を確認していました。

これらのコードの削除により、Goダッシュボードはパッケージのインストール数を追跡する能力を失いました。

関連リンク

参考にした情報源リンク

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

このコミットは、Go言語のダッシュボード(misc/dashboard)における外部パッケージのインストール数を記録する機能を元に戻す(undo)ものです。具体的には、以前のコミットで導入されたインストール数追跡機能が、一時的に見送られることになったため、関連するコードと設定が削除されています。

コミット

commit 52db02bef36de3c39f32cdcf059d6d45477ae449
Author: Andrew Gerrand <adg@golang.org>
Date:   Thu Mar 8 22:34:59 2012 +1100

    undo CL 5699082 / 6223c9fe432b
    
    We decided not to record installs, for now at least.
    
    ««« original CL description
    misc/dashboard: record install counts for external packages
    
    R=golang-dev, bradfitz
    CC=golang-dev
    https://golang.org/cl/5699082
    »»»
    
    R=golang-dev, dsymonds
    CC=golang-dev
    https://golang.org/cl/5790044

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

https://github.com/golang/go/commit/52db02bef36de3c39f32cdcf059d6d45477ae449

元コミット内容

このコミットは、以下の元のコミット(CL 5699082 / 6223c9fe432b)の変更を元に戻すものです。

misc/dashboard: record install counts for external packages

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5699082

元のコミットは、Go言語のダッシュボードに外部パッケージのインストール数を記録する機能を追加することを目的としていました。

変更の背景

コミットメッセージによると、「We decided not to record installs, for now at least.」(少なくとも今のところ、インストール数を記録しないことに決定した)という理由で、以前導入された外部パッケージのインストール数追跡機能が元に戻されました。これは、機能の導入が時期尚早である、あるいは実装方法や必要性について再検討が必要であると判断されたためと考えられます。

前提知識の解説

  • Go言語ダッシュボード (misc/dashboard): Goプロジェクトには、ビルドの状態、テスト結果、コミット履歴などを表示するためのダッシュボードが存在します。これは通常、Goの公式リポジトリの一部として管理され、Goのインフラストラクチャの健全性を監視する役割を担っています。このダッシュボードはGoogle App Engine上で動作していました。
  • Google App Engine (GAE): Googleが提供するPaaS(Platform as a Service)であり、ウェブアプリケーションやモバイルバックエンドを構築・デプロイするためのプラットフォームです。Go言語もサポートされており、app.yamlcron.yamlといった設定ファイルを使用してアプリケーションのデプロイやcronジョブの管理を行います。
  • go getコマンド: Go言語のパッケージ管理ツールであり、リモートリポジトリからGoパッケージをダウンロードし、ビルドしてインストールするために使用されます。このコミットで削除された機能は、go getによるパッケージインストール時に、そのインストール数をダッシュボードに報告するメカニズムを導入しようとしていたと考えられます。
  • CL (Change List): Gerritなどのコードレビューシステムで使われる用語で、一連の変更(コミット)をまとめたものです。GoプロジェクトではGerritがコードレビューに利用されており、https://golang.org/cl/の形式で各CLにアクセスできます。

技術的詳細

このコミットは、Goダッシュボードにおける外部パッケージのインストール数追跡機能を完全に削除しています。削除された主な機能と関連ファイルは以下の通りです。

  1. インストール数記録ロジック:
    • misc/dashboard/app/build/build.goから、Package構造体のInstallsInstallsByDayInstallsThisWeekといったインストール数関連のフィールドが削除されました。
    • これらのフィールドを更新するためのIncrementInstalls()UpdateInstallsThisWeek()dayCounts()といったメソッドも削除されました。これらは、日ごとのインストール数を記録し、過去30日間のデータを保持し、週ごとの合計を計算するロジックを含んでいました。
  2. パッケージインストールハンドラ:
    • misc/dashboard/app/build/pkg.goファイル全体が削除されました。このファイルは、go getコマンドなどからのインストールリクエストを受け付けるHTTPハンドラ(/install)と、週次インストール数を更新するためのcronジョブハンドラ(/install/cron)を含んでいました。
    • appengine/delayパッケージを使用して、インストール数の更新や週次集計を非同期で実行する機能も含まれていました。
    • 外部パッケージのインポートパスを検証するためのvalidPath関数や、VCS(バージョン管理システム)のパスを解析するためのvcsPath構造体、およびgoogleCodeVCScheckRootcheckURLといったヘルパー関数もこのファイルに含まれていました。これらは、GitHub、Bitbucket、Google Codeなどのリポジトリからパッケージがインストールされた際に、そのパスが有効であるかを確認するために使用されていました。
  3. App Engine設定:
    • misc/dashboard/app/app.yamlから、/install/install/cronへのルーティング設定が削除されました。これにより、これらのURLへのアクセスがアプリケーションレベルで無効化されました。
    • misc/dashboard/app/cron.yamlから、週次インストール数を更新するためのcronジョブ定義が削除されました。

これらの変更により、Goダッシュボードは外部パッケージのインストール数を追跡・記録する機能を完全に停止しました。

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

このコミットにおける主要な変更は、以下のファイルの削除と内容の変更です。

  • misc/dashboard/app/app.yaml:
    • /install/install/cronへのルーティングが削除されました。
  • misc/dashboard/app/build/build.go:
    • strconvパッケージのインポートが削除されました。
    • Package構造体からInstalls, InstallsByDay, InstallsThisWeekフィールドが削除されました。
    • IncrementInstalls(), UpdateInstallsThisWeek(), dayCounts()関数が削除されました。
  • misc/dashboard/app/build/pkg.go:
    • ファイル全体が削除されました。 このファイルには、インストールハンドラ、cronハンドラ、パッケージパス検証ロジックなどが含まれていました。
  • misc/dashboard/app/cron.yaml:
    • /install/cronを実行するcronジョブの定義が削除されました。

コアとなるコードの解説

削除されたmisc/dashboard/app/build/pkg.goファイルは、この機能の中核をなしていました。

  • installHandler: http.HandleFunc("/install", installHandler)として登録され、go getコマンドなどから送信されるパッケージインストールリクエストを受け付けていました。リクエストに含まれるパッケージパスを検証し、installLaterというappengine/delay関数を呼び出して、非同期でインストール数をインクリメントしていました。
  • installCronHandler: http.HandleFunc("/install/cron", installCronHandler)として登録され、cronジョブによって定期的に呼び出されていました。このハンドラは、すべての外部パッケージのキーを取得し、それぞれのパッケージに対してupdateWeeklyLaterというappengine/delay関数を呼び出し、週次インストール数を更新していました。
  • install関数: appengine/delayによって非同期で実行され、指定されたパッケージパスのインストール数をデータストア(Google App Engineのデータストレージ)上でインクリメントしていました。また、日ごとのインストール数を記録し、過去30日間のデータを保持するロジックも含まれていました。
  • updateWeekly関数: appengine/delayによって非同期で実行され、指定されたパッケージの週次インストール数を更新していました。
  • validPath関数: インストールリクエストで提供されたパッケージパスが有効なGoパッケージのインポートパスであるかを検証していました。GitHub、Bitbucket、Google Codeなどの主要なVCSプロバイダのパターンにマッチするかを確認し、必要に応じてHTTPリクエストを送信してリポジトリの存在を確認していました。

これらのコードの削除により、Goダッシュボードはパッケージのインストール数を追跡する能力を失いました。

関連リンク

参考にした情報源リンク