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

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

このコミットは、Goプロジェクトのコードレビューシステムにおけるツールの名称変更に対応するものです。具体的には、lib/codereview/codereview.pyファイル内で、特定のコミットメッセージを識別するための文字列が'Generated by addca.'から'Generated by a+c.'へと更新されています。これは、関連するツールまたはスクリプトの名称が変更されたことに伴う、コードベースの整合性を保つための修正です。

コミット

codereview: update name of the a+c tool

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

https://github.com/golang/go/commit/4eb4dc0cfc3dd8e52a1de94707acc1273f740de5

元コミット内容

commit 4eb4dc0cfc3dd8e52a1de94707acc1273f740de5
Author: Brad Fitzpatrick <bradfitz@golang.org>
Date:   Tue Jul 1 09:25:34 2014 -0700

    codereview: update name of the a+c tool
    
    LGTM=rsc
    R=rsc, minux
    CC=golang-codereviews
    https://golang.org/cl/105480043
---
 lib/codereview/codereview.py | 2 +-| 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/codereview/codereview.py b/lib/codereview/codereview.py
index e07b1ce2c8..f7db3870b0 100644
--- a/lib/codereview/codereview.py
+++ b/lib/codereview/codereview.py
@@ -2057,7 +2057,7 @@ def needLGTM(cl):
  \tisGobot = 'gobot' in rev or 'gobot@swtch.com' in rev or 'gobot@golang.org' in rev
  \t
  \t# A+C CLs generated by addca do not need LGTM
-\tif cl.desc.startswith('A+C:') and 'Generated by addca.' in cl.desc and isGobot:\n+\tif cl.desc.startswith('A+C:') and 'Generated by a+c.' in cl.desc and isGobot:\n \t\treturn False
  \t
  \t# CLs modifying only go1.x.txt do not need LGTM

変更の背景

この変更は、Goプロジェクトのコードレビューシステムで使用される内部ツールの名称変更に起因しています。Goプロジェクトでは、addcaというツールが特定の種類の変更リスト(CL: Change List)を生成していました。これらのCLは、自動的に生成される性質上、人間のレビュー担当者による「LGTM」(Looks Good To Me)の承認を必要としない場合があります。

しかし、このaddcaツールの名称がa+cに変更されたため、コードレビューシステムがこれらの自動生成されたCLを正しく識別できるように、関連する文字列も更新する必要がありました。このコミットは、codereview.py内の条件文が、新しいツール名で生成されたCLを適切に認識し、LGTMの要件をスキップできるようにするためのものです。

前提知識の解説

  • Goプロジェクトのコードレビュープロセス: Goプロジェクトは、Gerritをベースとした独自のコードレビューシステムを使用しています。開発者は変更をコミットする前に、CL(Change List)としてレビューシステムに提出します。他の開発者やメンテナがそのCLをレビューし、問題がなければ「LGTM」(Looks Good To Me)という承認を与えます。LGTMが付与されることで、その変更がマージされる準備が整ったと見なされます。
  • CL (Change List): Gerritにおける変更の単位。Gitのコミットに相当しますが、レビューシステム上での管理単位として使われます。
  • LGTM (Looks Good To Me): コードレビューにおいて、レビュー担当者が提案された変更を承認する際に使用するステータス。LGTMが付与されることで、その変更が品質基準を満たしていると見なされます。
  • Gobot: Goプロジェクトにおける自動化されたボットアカウント。特定のタスク(例えば、自動的なCLの生成やテストの実行)を実行するために使用されます。このコミットの文脈では、a+cツールによって生成されたCLがGobotによって提出されることを示唆しています。
  • addca / a+c ツール: これは、Goプロジェクトの内部で使われる、特定の種類の変更(例えば、自動生成されるファイルや、非常に単純なデータ更新など)を自動的に「追加(Add)」し「コミット(Commit)」するためのスクリプトまたはツールであると推測されます。このようなツールが生成するCLは、人間による詳細なレビューが不要な場合があるため、LGTMの要件から除外されることがあります。

技術的詳細

このコミットは、Goプロジェクトのコードレビューシステムの中核をなすPythonスクリプトlib/codereview/codereview.py内のロジックを修正しています。このスクリプトは、CLがマージされるためにLGTMが必要かどうかを判断するneedLGTM関数を含んでいます。

変更の対象となった行は、特定の条件を満たすCLに対してLGTMの要件を免除する部分です。具体的には、以下の3つの条件がAND結合されています。

  1. cl.desc.startswith('A+C:'): CLのdescription(コミットメッセージ)が「A+C:」で始まること。これは、a+cツールによって生成されたCLであることを示すマーカーです。
  2. 'Generated by addca.' in cl.desc (変更前) / 'Generated by a+c.' in cl.desc (変更後): CLのdescriptionに、そのCLが特定のツールによって生成されたことを示す文字列が含まれていること。この文字列がaddcaからa+cに変更されました。
  3. isGobot: そのCLがGobotによって提出されたものであること。

これらの条件がすべて真である場合、needLGTM関数はFalseを返し、そのCLはLGTMなしでマージ可能と判断されます。この修正により、a+cという新しいツール名で生成されたCLも、以前のaddcaツールと同様にLGTMの要件をスキップできるようになります。これは、自動化されたワークフローの継続性を保証するために不可欠な変更です。

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

--- a/lib/codereview/codereview.py
+++ b/lib/codereview/codereview.py
@@ -2057,7 +2057,7 @@ def needLGTM(cl):
  \tisGobot = 'gobot' in rev or 'gobot@swtch.com' in rev or 'gobot@golang.org' in rev
  \t
  \t# A+C CLs generated by addca do not need LGTM
-\tif cl.desc.startswith('A+C:') and 'Generated by addca.' in cl.desc and isGobot:\n+\tif cl.desc.startswith('A+C:') and 'Generated by a+c.' in cl.desc and isGobot:\n \t\treturn False
  \t
  \t# CLs modifying only go1.x.txt do not need LGTM

コアとなるコードの解説

変更された行は、lib/codereview/codereview.pyファイルのneedLGTM関数内にあります。

- if cl.desc.startswith('A+C:') and 'Generated by addca.' in cl.desc and isGobot:
+ if cl.desc.startswith('A+C:') and 'Generated by a+c.' in cl.desc and isGobot:

このif文は、特定の条件を満たすCLがLGTMを必要としないかどうかをチェックしています。

  • cl.desc.startswith('A+C:'): コミットメッセージ(cl.desc)が文字列「A+C:」で始まるかどうかを確認します。これは、自動生成されたコミットであることを示す慣例的なプレフィックスです。
  • 'Generated by addca.' in cl.desc (変更前): コミットメッセージ内に「Generated by addca.」という文字列が含まれているかどうかを確認します。これは、addcaというツールによって生成されたことを示します。
  • 'Generated by a+c.' in cl.desc (変更後): 上記の文字列が「Generated by a+c.」に変更されました。これは、addcaツールの名称がa+cに変更されたことに対応するものです。
  • isGobot: コミットがGoの自動化ボット(Gobot)によって行われたものであるかどうかを示すブール値です。

これらの条件がすべて真である場合、return Falseが実行され、そのCLはLGTMの承認なしでマージできると判断されます。この変更は、ツールの名称変更に合わせて、コードレビューシステムが自動生成されたCLを正しく識別し続けるための、シンプルながらも重要な修正です。

関連リンク

参考にした情報源リンク

  • GoプロジェクトのGitHubリポジトリ
  • Gerrit Code Reviewのドキュメント
  • Goプロジェクトの貢献ガイドライン
  • コミットメッセージ内の情報
  • lib/codereview/codereview.pyファイルのコンテキスト
  • Goプロジェクトのコードレビューに関する一般的な知識
  • a+cツールに関する具体的な情報は、Goプロジェクトの内部ツールであるため、公開されているドキュメントは限られています。この解説は、コミットメッセージとコードの変更から推測される情報に基づいています。