Go Wiki: GerritBot
GerritBotは、GitHubのプルリクエスト(PR)をコードレビューのためにGerritにインポートするためのツールです。GoチームはすべてのレビューをGerritで行っていますが、GitHub PRを介してコードを貢献するためのより一般的なワークフローを許可したいと考えているため、このツールが作成されました。
目次
ワークフロー
- ユーザーは、他のGitHubプロジェクトがPRを受け入れるのと同様に、当社の任意のGitHubリポジトリに対してGitHub PRをアップロードできます。
- PRの変更はGerritBotによってインポートされ、Gerritレビューへのリンクを含むメッセージがGitHub PRに投稿されます。
- すべてのコメントはGerrit内で処理されます。GitHub PRへのコメントはすべて無視されます。
- PRの作成者は、Gerritからのフィードバックに対処するために、PRで使用されているブランチにコミットをアップロードし続けることができます。
- コミットメッセージへの変更は、Gerritまたはgitではなく、GitHub PRのタイトルと説明を編集することによって行う必要があります。(詳細については、以下のFAQを参照してください)。
- ドラフトPRはWIPとしてインポートされます。
- コードがマージ可能になったら、メンテナーがGerritで変更を提出し、GerritBotがイシューを閉じます。
- 同様に、Gerritで変更がクローズまたは破棄された場合、対応するPRもクローズされます。
よくある質問
GerritにサインアップするにはGoogleアカウントが必要ですか?GitHubアカウントでサインインできないのはなぜですか?
Gerritに登録するには、Gmailまたはその他のGoogleアカウントが必要です。これは、Gerritインスタンスを実行しているインフラストラクチャの制限であり、当社の管理外です。さらに、貢献を受け入れるための要件として、CLAに署名するためにはすでにGoogleアカウントが必要です。
Gerritのコメントに返信しましたが、私以外誰も見ることができません
Gerritのコードへのコメントへの返信は、まずドラフトとして保存され、「返信」ボタンで公開する必要があります。これは、レビュー「セッション」ごとの複数のメールを防ぐためであり、GitHubの保留中のレビューワークフローに似ています。「返信」ボタンのテキストの横に数字が表示されている場合、公開する保留中のドラフトがあることを意味します。
Gerritのウェブインターフェースの上部付近に大きな青い「返信」ボタンが表示されない場合は、Gmailまたはその他のGoogleアカウントが必要なGerritにログインしていることを確認してください。
GerritBotは最終的なコミットメッセージをどのように決定しますか?
覚えておくべき重要な点
- GitHub PRのタイトルとPRの説明(最初のPRコメント)は、定期的にGerritにプレーンテキスト形式でGerritコミットメッセージとしてインポートされます。
- Gerritコミットメッセージを更新するには、GitHubウェブインターフェースを使用してPRタイトルとPR説明を編集する必要があります。
- 更新されたコミットメッセージを含む別のコミットをPRにプッシュするだけでは、Gerritコミットメッセージを更新できません。(別のコミットをプッシュしても、GitHub PRのタイトルまたはPRの説明が自動的に更新されないため、更新されたテキストはGerritにインポートされません)。
GitHub PRを介したGerritコミットメッセージの更新

より詳細には、GerritBotはGitHub PRの最新のPRタイトルとPR説明を使用して、Gerrit変更のコミットメッセージを構築します。このテキストは、GitHubウェブインターフェース(Gerritやgitではない)を介して編集可能です。
- PRタイトルは、PRページ右上の「編集」ボタンから編集できます。これはGerritのコミットメッセージの最初の行に使用されます。
- PR説明は、GitHub PRの「会話」タブの下にある最初のテキストエリアにあります。「...」メニューの「編集」オプションから編集できます。このテキストは、Gerritのコミットメッセージ本文の残りの部分に使用されます。
GitHubでPRが編集されると、Gerritの変更が更新されるまでに10分ほどかかることがあります。
注:Gerritは、GitHubでメッセージを編集する際に表示されるプレーンテキストをインポートし、編集前にGitHubで表示されるレンダリングされたテキストはインポートしません。
関連する混乱の一般的な領域の1つは、イシュー参照に関するものです。たとえば、GerritBotまたは人間のレビューアは、イシュー参照にURLを使用しないように求めるかもしれません。Gerritではイシューの完全なURLが表示されるかもしれませんが、GitHubウェブインターフェースでは`#12345`のようなイシュー参照しか表示されず、URLがどこから来ているのか不明確な場合があります。これは、GitHubのレンダリングされた表示と、基になる生の/プレーンテキストとの間の混乱が原因である可能性があります。GitHubウェブインターフェースでGitHubでテキストを編集しているときに`Fixes https://github.com/golang/go/issues/12345`のようなものが表示される場合、代わりに`Fixes #12345`または`Fixes golang/go#12345`のように変更してください。イシュー参照の詳細については、貢献ガイドを参照してください。
CLとは何ですか?Gerritの変更とは何ですか?
CLは「変更リスト」の略で、リポジトリに導入される提案されたパッチのことです。GoプロジェクトはGerritを使用して各CLを注意深くレビューします。CLの例はhttps://go.dokyumento.jp/cl/508475です。
Gerritの変更はCLの別名です。
他の人のCLのレビューを手伝うことはできますか?
はい、これは強く推奨されており、Gerrit、Goプロジェクトのコードレビュープロセス、Go標準ライブラリ、ランタイム、コンパイラの内部などに慣れるための素晴らしい方法です。
現在オープンしているCLはこちらから閲覧でき、星アイコンをクリックすると興味のあるCLの更新を購読できます。
最初のレビュートリアージを手伝うために、コードの専門家である必要はありません。詳細については、ガーデニングウィキページのCLのレビューを手伝うセクションを参照してください。
Gerritは変更ごとに1つのコミットを要求すると聞きました。PRに複数のコミットをアップロードできますか?
好きなだけコミットをアップロードできます。GerritBotがコミットを1つの変更にまとめ、Gerritで処理できるようにします。
GerritBotが私の変更の所有者であるのはなぜですか?
これは、Gerritが別のユーザーとして動作する方法の未解決のバグが原因です。それが修正されれば、元の作成者も変更の所有者になります。
GerritBotが私のPRにコメントを投稿するのをやめるよう依頼できますか?
commentsスラッシュコマンド(例:/comments off)を使用して、GerritBotからのコメントのオン/オフを切り替えることができます。
フィードバックとバグレポート
イシューを報告し、タイトルにx/build/cmd/gerritbot:というプレフィックスを使用してください。
機能を追加/バグを修正したい
このコンテンツはGo Wikiの一部です。