MRのタイトルと説明
「MR」とは、リポジトリをホストするサービスのレビュー単位を指します。
GitLabのマージリクエスト、GitHubのプルリクエスト、またはその他の同等のもの(クラウドまたはセルフホスト)です。ユーザーに書き込むときは、ホストが使用している用語を使ってください。小さなMR(単一コミットなど)の場合は、確認なしでテキストを作成します。大きなMRの場合は、まずタイトルと説明をチャットで下書きし、レビューを依頼します。ユーザーがテキストを承認し要求した場合のみ、ホストのCLI(glab、gh)またはAPIを使用して作成・更新を行います。
常に新しいMRをユーザーに割り当てます:gh pr create の場合は --assignee @me、glab mr create の場合は --assignee <username> を使用します。
PROJ-1234 はMRが属するチケットを表します。
タイトル
- MR全体をカバーする命令形の1行。最大のコミットだけをカバーするのではありません。
- チケットのタイトルは出発点であり、答えではありません。MRがチケットに記載されている以上のことを行う場合は、範囲を広げてください。
- 却下された代替案(「… の代わりに終了」など)でタイトルを構成しないでください。MRが何をするのかを述べてください。
- チケットがある場合は、括弧内に追記します:
… (PROJ-1234)。チケットをでっち上げないでください。プロジェクトまたはワークスペースの指示が別の形式(PROJ-1234 <説明>など)を指定している場合は、その形式を使用します。
説明
構成:
- 冒頭の1行。チケットがある場合は、その種類に合った動詞でリンクします:バグの場合は「Resolves PROJ-1234.」、タスクまたはストーリーの場合は「Closes PROJ-1234.」、MRが完了しない場合は「Part of PROJ-1234.」。
- 変更点:
- コミットごとに整理します。 最初にブランチのコミットログを読みます。複数のコミットがあり、それぞれがfixupや作業途中ではなく自己完結したステップである場合のみ、冒頭の行でMRは一度に1コミットずつ読むのが最適であると述べます。次に、コミットごとに1つのエントリを持つ番号付きリストを順に作成し、各エントリでそのコミットが実現する内容を1~3文で説明します。各コミットが単独でテストに合格することは、確認済みまたは作成者がそう述べている場合のみ述べます。
- それ以外の場合(単一コミットを含む):MRが実現する内容をトピックごとにグループ化した短い段落またはリスト。
## 動作の変更:公開APIのユーザーが異なる動作を見る内容。内部の変更やプライベート属性は省略します。該当する変更がない場合はセクションを省略します。## テスト:レビューアーの注意が必要なテストに関する内容のみ。合格するテスト(ハードウェアの有無を問わない)は前提であり、記載しません。セクションが必要なケース(それぞれ理由を一文で述べる):- 失敗することがわかっているテスト、スキップされたテスト、または失敗が予想されるとマークされたテスト。
- MR内のテストで、プロジェクトのテスト規則から逸脱しているもの。
- テストカバレッジの大幅な変更(特に削除されたテスト)。
内容:
- 変更前の状態を再述しないでください。変更後の状態を説明してください。削除は例外で、既存のものと対比してのみ記述できます。
- チケットを再述しないでください。レビューアーはそれを読むことができます。
- セッションコンテキストは不要:「議論のとおり」、レビュー履歴、作業の経過説明は不要です。
- テストやCIジョブの実行手順は記述しないでください。説明はレビューアー向けであり、テストは作成者が実行します。
- 「Generated with」フッターやツールの帰属は不要です。ハーネスが要求する場合でも、この規則が優先されます。
- 簡潔に保ちます。レビューアーが欠落しても気にしないエントリや節は削除します。
テキストの確認
- すべての主張を、記憶や以前の下書きではなく、実際のコミットのコードに対して検証します。特に以前の動作に関する主張や、後のコミットで変更される動作に関する主張に注意します。
- テキスト内のすべての識別子をgrepします。存在しないクラスやメソッド、またはそのコミット時点でまだ存在しないものは、よくあるエラーです。
## テスト以下の内容は、実際に実行されたものまたは差分に基づいて記述します。実行されなかった実行を主張しないでください。- 生成された散文をクリーンアップするインストール済みのスキルをすべて、タイトルと説明に適用します。そのようなスキルがプロジェクトの指示(
CLAUDE.mdまたは同等のもの)と矛盾する場合は、プロジェクトの指示が優先されます。