[インデックス 19531] ファイルの概要
このコミットは、GoプロジェクトのコードレビューシステムにおけるLGTM (Looks Good To Me) の要件に関する変更を扱っています。具体的には、doc/go1.x.txt
ファイルに対する変更の場合、LGTMが不要になるようにルールが緩和されました。
コミット
commit ff9af906f6a45fb97119a3a53b7df6d1638cc1c6
Author: Russ Cox <rsc@golang.org>
Date: Thu Jun 12 16:35:12 2014 -0400
codereview: no LGTM needed for doc/go1.x.txt
Rob asked for this change to make maintaining go1.4.txt easier.
If you are not sure of a change, it is still okay to send for review.
LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/109880044
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/ff9af906f6a45fb97119a3a53b7df6d1638cc1c6
元コミット内容
codereview: no LGTM needed for doc/go1.x.txt
Rob asked for this change to make maintaining go1.4.txt easier.
If you are not sure of a change, it is still okay to send for review.
LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/109880044
変更の背景
この変更は、Goプロジェクトのリリースノートやドキュメントを管理する doc/go1.x.txt
ファイルのメンテナンスを容易にすることを目的としています。コミットメッセージに「Rob asked for this change to make maintaining go1.4.txt easier.」とあるように、Rob Pike氏からの要望が発端となっています。
通常、Goプロジェクトへの変更は厳格なコードレビュープロセスを経ており、変更が承認されたことを示す「LGTM (Looks Good To Me)」の承認が必要とされます。しかし、doc/go1.x.txt
のようなドキュメントファイルは、主にリリースに関する情報や変更点を記述するものであり、コードのロジックや安全性に直接影響を与えるものではありません。そのため、これらのファイルに対する軽微な修正や更新のたびにLGTMを必須とすることは、リリースの準備やドキュメントの最新性維持においてオーバーヘッドとなる可能性がありました。
このコミットは、特定のドキュメントファイルに対する変更の承認プロセスを合理化し、開発者の負担を軽減することで、より迅速かつ効率的なドキュメント更新を可能にすることを意図しています。ただし、コミットメッセージには「If you are not sure of a change, it is still okay to send for review.」と明記されており、LGTMが不要になったとしても、疑わしい変更や重要な変更については引き続きレビューを求めることが推奨されています。これは、プロセスの効率化と品質維持のバランスを取るための配慮です。
前提知識の解説
このコミットを理解するためには、以下の概念について知っておく必要があります。
-
Goプロジェクトのコードレビュープロセス: Goプロジェクトは、Googleが開発したGo言語の公式リポジトリであり、その開発は厳格なコードレビュープロセスを通じて行われます。これは、コードの品質、一貫性、正確性を保証するために不可欠です。開発者が変更を提案する際には、通常、変更リスト(Change List, CL)を作成し、それをレビューシステムに提出します。他の開発者やメンテナがそのCLをレビューし、問題がなければ「LGTM (Looks Good To Me)」という承認を与えます。LGTMは、その変更がコードベースにマージされる準備ができたことを示す重要なシグナルです。
-
LGTM (Looks Good To Me): LGTMは、コードレビューにおいて、レビュー担当者が提案された変更を承認し、その変更がコードベースに統合される準備ができたと判断したことを示す一般的な略語です。多くのオープンソースプロジェクトや企業内の開発プロセスで採用されています。LGTMが付与されることで、変更が品質基準を満たし、既存のコードベースと適切に統合されることが保証されます。
-
codereview.py
:codereview.py
は、Goプロジェクトが使用していたカスタムのコードレビューツールの一部、またはそのクライアントスクリプトであると推測されます。Goプロジェクトは、初期にはGoogleの内部コードレビューシステム(Mondrian/Gerritベース)をカスタマイズして使用していました。このスクリプトは、変更リストの提出、レビューコメントの取得、LGTMのチェック、そして最終的な変更のマージ(submit)といった一連のコードレビューワークフローを自動化または支援する役割を担っていました。このスクリプトが、変更をコミットする際にLGTMの有無をチェックするロジックを含んでいたと考えられます。 -
doc/go1.x.txt
ファイル:doc/go1.x.txt
は、Go言語の特定のメジャーバージョン(例:go1.4.txt
)に関するリリースノートや重要な変更点をまとめたドキュメントファイルです。これらのファイルは、Goの新しいバージョンがリリースされるたびに更新され、ユーザーがそのバージョンの新機能、バグ修正、非互換な変更などを把握するための主要な情報源となります。これらはコードそのものではなく、コードの変更内容を説明するテキストファイルです。 -
A+C:
CLs generated byaddca
: コミットの差分にA+C:
CLs generated byaddca
という記述があります。これは、おそらく自動生成されたコミット(addca
ツールによって生成されたもの)を指しています。A+C:
は "Author + Committer" の略である可能性があり、特定の自動化されたプロセスによって作成されたコミットが、通常の人間によるコミットとは異なる扱いを受けることを示唆しています。gobot
も関連しており、これはGoプロジェクトの自動化ボットを指すと考えられます。このような自動生成されたコミットは、通常、LGTMを必要としない場合があります。
技術的詳細
このコミットの技術的な変更は、lib/codereview/codereview.py
ファイル内の submit
関数と、新たに導入された needLGTM
関数に集約されています。
変更前は、submit
関数内でLGTMのチェックが行われていました。そのロロジックは以下のようでした。
if not cl.lgtm and not opts.get('tbr') and not isAddca(cl):
raise hg_util.Abort("this CL has not been LGTM'ed")
ここで、cl.lgtm
はCLがLGTMされているか、opts.get('tbr')
は「To Be Reviewed」フラグが立っているか(つまり、レビュー待ちの状態か)、そして isAddca(cl)
はそのCLが addca
によって自動生成されたものか、をチェックしていました。isAddca
が True
を返す場合、LGTMは不要でした。
このコミットでは、isAddca(cl)
の呼び出しが needLGTM(cl)
に置き換えられました。そして、isAddca
関数自体は削除され、そのロジックは needLGTM
関数に統合・拡張されました。
新しい needLGTM
関数のロジックは以下の通りです。
-
A+C:
CLs generated byaddca
のチェック: まず、isAddca
のロジックが引き継がれています。cl.desc.startswith('A+C:')
かつ'Generated by addca.' in cl.desc
かつisGobot
(レビュアーにgobot
が含まれる) の場合、LGTMは不要 (return False
) となります。これは、自動生成されたコミットに対する既存のLGTM免除ルールを維持するものです。 -
doc/go1.x.txt
ファイルの変更に対するチェック: 次に、このコミットの主要な目的である新しいルールが追加されました。len(cl.files) == 1
(変更されたファイルが1つのみ) かつcl.files[0].startswith('doc/go1.')
かつcl.files[0].endswith('.txt')
の場合、LGTMは不要 (return False
) となります。 この条件は、doc/go1.x.txt
のような特定のドキュメントファイルのみが変更された場合に、LGTMの要件を免除します。これにより、これらのドキュメントの更新がよりスムーズに行えるようになります。 -
その他のCLs: 上記のいずれの条件にも当てはまらない場合、LGTMは必要 (
return True
) となります。これは、通常のコード変更に対しては引き続きLGTMが必須であることを意味します。
この変更により、コードレビューシステムは、特定の種類のドキュメント変更に対してより柔軟に対応できるようになり、Goプロジェクトのメンテナンス効率が向上しました。
コアとなるコードの変更箇所
diff --git a/lib/codereview/codereview.py b/lib/codereview/codereview.py
index 936e0b685a..e8d3e20146 100644
--- a/lib/codereview/codereview.py
+++ b/lib/codereview/codereview.py
@@ -1937,7 +1937,7 @@ def submit(ui, repo, *pats, **opts):\
about = ""
- if not cl.lgtm and not opts.get('tbr') and not isAddca(cl):\
+ if not cl.lgtm and not opts.get('tbr') and needLGTM(cl):\
raise hg_util.Abort("this CL has not been LGTM'ed")
if cl.lgtm:\
about += "LGTM=" + JoinComma([CutDomain(who) for (who, line, approval) in cl.lgtm if approval]) + "\n"
@@ -2052,10 +2052,20 @@ def submit(ui, repo, *pats, **opts):\
return err
return 0
-def isAddca(cl):\
+def needLGTM(cl):\
rev = cl.reviewer
isGobot = 'gobot' in rev or 'gobot@swtch.com' in rev or 'gobot@golang.org' in rev
-\treturn cl.desc.startswith('A+C:') and 'Generated by addca.' in cl.desc and isGobot
+\treturn cl.desc.startswith('A+C:') and 'Generated by addca.' in cl.desc and isGobot
+\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:\
+\t\treturn False
+\t\
+\t# CLs modifying only go1.x.txt do not need LGTM
+\tif len(cl.files) == 1 and cl.files[0].startswith('doc/go1.') and cl.files[0].endswith('.txt'):
+\t\treturn False
+\t\
+\t# Other CLs need LGTM
+\treturn True
#######################################################################
# hg sync
コアとなるコードの解説
変更の中心は、lib/codereview/codereview.py
ファイル内の submit
関数と、新たに定義された needLGTM
関数です。
-
submit
関数の変更:- 変更前:
if not cl.lgtm and not opts.get('tbr') and not isAddca(cl):
- 変更後:
if not cl.lgtm and not opts.get('tbr') and needLGTM(cl):
submit
関数は、コードレビューシステムにおいて変更を最終的にコミット(マージ)する際のロジックを担っています。この変更により、LGTMが必要かどうかの判断が、以前のisAddca
関数から、より汎用的なneedLGTM
関数に委譲されるようになりました。これにより、LGTMの要件に関するルールをより柔軟に拡張できるようになりました。
- 変更前:
-
isAddca
関数の削除とneedLGTM
関数の導入:- 変更前は
isAddca(cl)
という関数が存在し、自動生成されたコミット(A+C:
で始まり、Generated by addca.
を含み、レビュアーにgobot
が含まれるもの)であるかを判定していました。 - このコミットでは
isAddca
関数が削除され、そのロジックがneedLGTM
関数に組み込まれました。 needLGTM(cl)
関数は、引数としてcl
(Change Listオブジェクト) を受け取ります。このcl
オブジェクトには、コミットに関する様々な情報(説明cl.desc
、変更されたファイルcl.files
、レビュアーcl.reviewer
など)が含まれています。
needLGTM
関数の内部ロジックは以下の通りです。-
rev = cl.reviewer
: CLのレビュアー情報を取得します。 -
isGobot = 'gobot' in rev or 'gobot@swtch.com' in rev or 'gobot@golang.org' in rev
: レビュアーにgobot
(Goの自動化ボット) が含まれているかをチェックします。 -
自動生成されたCLのチェック:
if cl.desc.startswith('A+C:') and 'Generated by addca.' in cl.desc and isGobot: return False
このブロックは、
isAddca
関数の元のロジックを再現しています。もしCLの説明がA+C:
で始まり、Generated by addca.
という文字列を含み、かつレビュアーにgobot
が含まれる場合、そのCLは自動生成されたものであり、LGTMは不要と判断されFalse
を返します。 -
doc/go1.x.txt
ファイルの変更のチェック:if len(cl.files) == 1 and cl.files[0].startswith('doc/go1.') and cl.files[0].endswith('.txt'): return False
これがこのコミットで追加された新しい主要なロジックです。
len(cl.files) == 1
: 変更されたファイルがちょうど1つだけであることを確認します。cl.files[0].startswith('doc/go1.')
: その唯一のファイルがdoc/go1.
で始まるパスであることを確認します(例:doc/go1.4.txt
,doc/go1.5.txt
など)。cl.files[0].endswith('.txt')
: そのファイルが.txt
拡張子を持つことを確認します。 これらの条件がすべて真である場合、そのCLはdoc/go1.x.txt
のようなドキュメントファイルのみを変更するものであり、LGTMは不要と判断されFalse
を返します。
-
その他のCLs:
return True
上記のどの条件にも当てはまらない場合、つまり、自動生成されたCLでもなく、かつ
doc/go1.x.txt
のような特定のドキュメントファイルのみを変更するものでもない場合、needLGTM
関数はTrue
を返します。これは、通常のコード変更には引き続きLGTMが必要であることを意味します。
- 変更前は
この変更により、Goのコードレビューシステムは、特定の種類のドキュメント変更に対して、より効率的かつ柔軟な承認プロセスを適用できるようになりました。
関連リンク
- GitHub上のコミットページ: https://github.com/golang/go/commit/ff9af906f6a45fb97119a3a53b7df6d1638cc1c6
- GoのCL (Change List) ページ: https://golang.org/cl/109880044
参考にした情報源リンク
- コミットメッセージと差分情報 (
./commit_data/19531.txt
) - Goプロジェクトのコードレビューに関する一般的な知識
- LGTM (Looks Good To Me) の概念に関する一般的な知識
- Pythonの文字列操作 (
startswith
,endswith
,in
) およびリスト操作 (len
,[0]
) に関する一般的な知識```markdown
[インデックス 19531] ファイルの概要
このコミットは、GoプロジェクトのコードレビューシステムにおけるLGTM (Looks Good To Me) の要件に関する変更を扱っています。具体的には、doc/go1.x.txt
ファイルに対する変更の場合、LGTMが不要になるようにルールが緩和されました。
コミット
commit ff9af906f6a45fb97119a3a53b7df6d1638cc1c6
Author: Russ Cox <rsc@golang.org>
Date: Thu Jun 12 16:35:12 2014 -0400
codereview: no LGTM needed for doc/go1.x.txt
Rob asked for this change to make maintaining go1.4.txt easier.
If you are not sure of a change, it is still okay to send for review.
LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/109880044
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/ff9af906f6a45fb97119a3a53b7df6d1638cc1c6
元コミット内容
codereview: no LGTM needed for doc/go1.x.txt
Rob asked for this change to make maintaining go1.4.txt easier.
If you are not sure of a change, it is still okay to send for review.
LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/109880044
変更の背景
この変更は、Goプロジェクトのリリースノートやドキュメントを管理する doc/go1.x.txt
ファイルのメンテナンスを容易にすることを目的としています。コミットメッセージに「Rob asked for this change to make maintaining go1.4.txt easier.」とあるように、Rob Pike氏からの要望が発端となっています。
通常、Goプロジェクトへの変更は厳格なコードレビュープロセスを経ており、変更が承認されたことを示す「LGTM (Looks Good To Me)」の承認が必要とされます。しかし、doc/go1.x.txt
のようなドキュメントファイルは、主にリリースに関する情報や変更点を記述するものであり、コードのロジックや安全性に直接影響を与えるものではありません。そのため、これらのファイルに対する軽微な修正や更新のたびにLGTMを必須とすることは、リリースの準備やドキュメントの最新性維持においてオーバーヘッドとなる可能性がありました。
このコミットは、特定のドキュメントファイルに対する変更の承認プロセスを合理化し、開発者の負担を軽減することで、より迅速かつ効率的なドキュメント更新を可能にすることを意図しています。ただし、コミットメッセージには「If you are not sure of a change, it is still okay to send for review.」と明記されており、LGTMが不要になったとしても、疑わしい変更や重要な変更については引き続きレビューを求めることが推奨されています。これは、プロセスの効率化と品質維持のバランスを取るための配慮です。
前提知識の解説
このコミットを理解するためには、以下の概念について知っておく必要があります。
-
Goプロジェクトのコードレビュープロセス: Goプロジェクトは、Googleが開発したGo言語の公式リポジトリであり、その開発は厳格なコードレビュープロセスを通じて行われます。これは、コードの品質、一貫性、正確性を保証するために不可欠です。開発者が変更を提案する際には、通常、変更リスト(Change List, CL)を作成し、それをレビューシステムに提出します。他の開発者やメンテナがそのCLをレビューし、問題がなければ「LGTM (Looks Good To Me)」という承認を与えます。LGTMは、その変更がコードベースにマージされる準備ができたことを示す重要なシグナルです。
-
LGTM (Looks Good To Me): LGTMは、コードレビューにおいて、レビュー担当者が提案された変更を承認し、その変更がコードベースに統合される準備ができたと判断したことを示す一般的な略語です。多くのオープンソースプロジェクトや企業内の開発プロセスで採用されています。LGTMが付与されることで、変更が品質基準を満たし、既存のコードベースと適切に統合されることが保証されます。
-
codereview.py
:codereview.py
は、Goプロジェクトが使用していたカスタムのコードレビューツールの一部、またはそのクライアントスクリプトであると推測されます。Goプロジェクトは、初期にはGoogleの内部コードレビューシステム(Mondrian/Gerritベース)をカスタマイズして使用していました。このスクリプトは、変更リストの提出、レビューコメントの取得、LGTMのチェック、そして最終的な変更のマージ(submit)といった一連のコードレビューワークフローを自動化または支援する役割を担っていました。このスクリプトが、変更をコミットする際にLGTMの有無をチェックするロジックを含んでいたと考えられます。 -
doc/go1.x.txt
ファイル:doc/go1.x.txt
は、Go言語の特定のメジャーバージョン(例:go1.4.txt
)に関するリリースノートや重要な変更点をまとめたドキュメントファイルです。これらのファイルは、Goの新しいバージョンがリリースされるたびに更新され、ユーザーがそのバージョンの新機能、バグ修正、非互換な変更などを把握するための主要な情報源となります。これらはコードそのものではなく、コードの変更内容を説明するテキストファイルです。 -
A+C:
CLs generated byaddca
: コミットの差分にA+C:
CLs generated byaddca
という記述があります。これは、おそらく自動生成されたコミット(addca
ツールによって生成されたもの)を指しています。A+C:
は "Author + Committer" の略である可能性があり、特定の自動化されたプロセスによって作成されたコミットが、通常の人間によるコミットとは異なる扱いを受けることを示唆しています。gobot
も関連しており、これはGoプロジェクトの自動化ボットを指すと考えられます。このような自動生成されたコミットは、通常、LGTMを必要としない場合があります。
技術的詳細
このコミットの技術的な変更は、lib/codereview/codereview.py
ファイル内の submit
関数と、新たに導入された needLGTM
関数に集約されています。
変更前は、submit
関数内でLGTMのチェックが行われていました。そのロジックは以下のようでした。
if not cl.lgtm and not opts.get('tbr') and not isAddca(cl):
raise hg_util.Abort("this CL has not been LGTM'ed")
ここで、cl.lgtm
はCLがLGTMされているか、opts.get('tbr')
は「To Be Reviewed」フラグが立っているか(つまり、レビュー待ちの状態か)、そして isAddca(cl)
はそのCLが addca
によって自動生成されたものか、をチェックしていました。isAddca
が True
を返す場合、LGTMは不要でした。
このコミットでは、isAddca(cl)
の呼び出しが needLGTM(cl)
に置き換えられました。そして、isAddca
関数自体は削除され、そのロジックは needLGTM
関数に統合・拡張されました。
新しい needLGTM
関数のロジックは以下の通りです。
-
A+C:
CLs generated byaddca
のチェック: まず、isAddca
のロジックが引き継がれています。cl.desc.startswith('A+C:')
かつ'Generated by addca.' in cl.desc
かつisGobot
(レビュアーにgobot
が含まれる) の場合、LGTMは不要 (return False
) となります。これは、自動生成されたコミットに対する既存のLGTM免除ルールを維持するものです。 -
doc/go1.x.txt
ファイルの変更に対するチェック: 次に、このコミットの主要な目的である新しいルールが追加されました。len(cl.files) == 1
(変更されたファイルが1つのみ) かつcl.files[0].startswith('doc/go1.')
かつcl.files[0].endswith('.txt')
の場合、LGTMは不要 (return False
) となります。 この条件は、doc/go1.x.txt
のような特定のドキュメントファイルのみが変更された場合に、LGTMの要件を免除します。これにより、これらのドキュメントの更新がよりスムーズに行えるようになります。 -
その他のCLs: 上記のいずれの条件にも当てはまらない場合、LGTMは必要 (
return True
) となります。これは、通常のコード変更に対しては引き続きLGTMが必須であることを意味します。
この変更により、コードレビューシステムは、特定の種類のドキュメント変更に対してより柔軟に対応できるようになり、Goプロジェクトのメンテナンス効率が向上しました。
コアとなるコードの変更箇所
diff --git a/lib/codereview/codereview.py b/lib/codereview/codereview.py
index 936e0b685a..e8d3e20146 100644
--- a/lib/codereview/codereview.py
+++ b/lib/codereview/codereview.py
@@ -1937,7 +1937,7 @@ def submit(ui, repo, *pats, **opts):\
about = ""
- if not cl.lgtm and not opts.get('tbr') and not isAddca(cl):\
+ if not cl.lgtm and not opts.get('tbr') and needLGTM(cl):\
raise hg_util.Abort("this CL has not been LGTM'ed")
if cl.lgtm:\
about += "LGTM=" + JoinComma([CutDomain(who) for (who, line, approval) in cl.lgtm if approval]) + "\n"
@@ -2052,10 +2052,20 @@ def submit(ui, repo, *pats, **opts):\
return err
return 0
-def isAddca(cl):\
+def needLGTM(cl):\
rev = cl.reviewer
isGobot = 'gobot' in rev or 'gobot@swtch.com' in rev or 'gobot@golang.org' in rev
-\treturn cl.desc.startswith('A+C:') and 'Generated by addca.' in cl.desc and isGobot
+\treturn cl.desc.startswith('A+C:') and 'Generated by addca.' in cl.desc and isGobot
+\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:\
+\t\treturn False
+\t\
+\t# CLs modifying only go1.x.txt do not need LGTM
+\tif len(cl.files) == 1 and cl.files[0].startswith('doc/go1.') and cl.files[0].endswith('.txt'):
+\t\treturn False
+\t\
+\t# Other CLs need LGTM
+\treturn True
#######################################################################
# hg sync
コアとなるコードの解説
変更の中心は、lib/codereview/codereview.py
ファイル内の submit
関数と、新たに定義された needLGTM
関数です。
-
submit
関数の変更:- 変更前:
if not cl.lgtm and not opts.get('tbr') and not isAddca(cl):
- 変更後:
if not cl.lgtm and not opts.get('tbr') and needLGTM(cl):
submit
関数は、コードレビューシステムにおいて変更を最終的にコミット(マージ)する際のロジックを担っています。この変更により、LGTMが必要かどうかの判断が、以前のisAddca
関数から、より汎用的なneedLGTM
関数に委譲されるようになりました。これにより、LGTMの要件に関するルールをより柔軟に拡張できるようになりました。
- 変更前:
-
isAddca
関数の削除とneedLGTM
関数の導入:- 変更前は
isAddca(cl)
という関数が存在し、自動生成されたコミット(A+C:
で始まり、Generated by addca.
を含み、レビュアーにgobot
が含まれるもの)であるかを判定していました。 - このコミットでは
isAddca
関数が削除され、そのロジックがneedLGTM
関数に組み込まれました。 needLGTM(cl)
関数は、引数としてcl
(Change Listオブジェクト) を受け取ります。このcl
オブジェクトには、コミットに関する様々な情報(説明cl.desc
、変更されたファイルcl.files
、レビュアーcl.reviewer
など)が含まれています。
needLGTM
関数の内部ロジックは以下の通りです。-
rev = cl.reviewer
: CLのレビュアー情報を取得します。 -
isGobot = 'gobot' in rev or 'gobot@swtch.com' in rev or 'gobot@golang.org' in rev
: レビュアーにgobot
(Goの自動化ボット) が含まれているかをチェックします。 -
自動生成されたCLのチェック:
if cl.desc.startswith('A+C:') and 'Generated by addca.' in cl.desc and isGobot: return False
このブロックは、
isAddca
関数の元のロジックを再現しています。もしCLの説明がA+C:
で始まり、Generated by addca.
という文字列を含み、かつレビュアーにgobot
が含まれる場合、そのCLは自動生成されたものであり、LGTMは不要と判断されFalse
を返します。 -
doc/go1.x.txt
ファイルの変更のチェック:if len(cl.files) == 1 and cl.files[0].startswith('doc/go1.') and cl.files[0].endswith('.txt'): return False
これがこのコミットで追加された新しい主要なロジックです。
len(cl.files) == 1
: 変更されたファイルがちょうど1つだけであることを確認します。cl.files[0].startswith('doc/go1.')
: その唯一のファイルがdoc/go1.
で始まるパスであることを確認します(例:doc/go1.4.txt
,doc/go1.5.txt
など)。cl.files[0].endswith('.txt')
: そのファイルが.txt
拡張子を持つことを確認します。 これらの条件がすべて真である場合、そのCLはdoc/go1.x.txt
のようなドキュメントファイルのみを変更するものであり、LGTMは不要と判断されFalse
を返します。
-
その他のCLs:
return True
上記のどの条件にも当てはまらない場合、つまり、自動生成されたCLでもなく、かつ
doc/go1.x.txt
のような特定のドキュメントファイルのみを変更するものでもない場合、needLGTM
関数はTrue
を返します。これは、通常のコード変更には引き続きLGTMが必要であることを意味します。
- 変更前は
この変更により、Goのコードレビューシステムは、特定の種類のドキュメント変更に対して、より効率的かつ柔軟な承認プロセスを適用できるようになりました。
関連リンク
- GitHub上のコミットページ: https://github.com/golang/go/commit/ff9af906f6a45fb97119a3a53b7df6d1638cc1c6
- GoのCL (Change List) ページ: https://golang.org/cl/109880044
参考にした情報源リンク
- コミットメッセージと差分情報 (
./commit_data/19531.txt
) - Goプロジェクトのコードレビューに関する一般的な知識
- LGTM (Looks Good To Me) の概念に関する一般的な知識
- Pythonの文字列操作 (
startswith
,endswith
,in
) およびリスト操作 (len
,[0]
) に関する一般的な知識