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を参照してください)。
  • ドラフトPRWIPとしてインポートされます。
  • コードがマージ可能になったら、メンテナーが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コミットメッセージの更新

Screenshot of the GitHub PR web interface highlighting
the “Edit” button in top-right (for editing the Gerrit commit message title) and
the “Edit” menu option on the first comment (for editing the Gerrit commit message
body).

より詳細には、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:というプレフィックスを使用してください。

機能を追加/バグを修正したい

  • 機能/バグが自明でない場合は、まずイシューを報告してください。
  • コードはx/build/cmd/gerritbotにあります(GitHubGerrit)。

このコンテンツはGo Wikiの一部です。