mozilla

How to Submit a Patch

ツリーに変更を加え、テストしてパッチを作成したら、メインのソースツリーに還元するのが良いでしょう。これには 3 つの行程を踏む必要があります。

  • Bugzilla の関連バグにパッチを添付する
  • パッチをレビューしてもらう
  • 最後に、ツリーにチェックインする

以下の章ではこれらの行程について詳しく説明します。

パッチの添付

作成したパッチをみんなに見てもらうには、最初に Bugzilla の関連バグにそのパッチを添付しなければなりません。まず、そのパッチが解決する問題を扱ったバグがないかどうか探してください。もしなければ、新しいバグを申請してください。どんな問題をどのように解決しようとしているのかがパッチを見ただけではわかりづらい場合には、必ず詳しい説明を加えてください。問題点と修正方法が明確であればあるほど、見てもらえる可能性は高くなります。

関連バグを見つけるか申請したら、作成したパッチを "Add an attachment" リンクから添付してください。"patch" チェックボックスにチェックを入れると、装飾された side-by-side 形式のバージョンをパッチの隣の "Diff" リンクから見られるようになります。アカウントに editbugs 許可ビットが設定されているなら (Preferences の Permissions にリストアップされているなら) 、ついでに "take bug" チェックボックスにチェックを入れてください。 また、添付ファイル一覧表の "Details" リンクから、送信後であっても添付ファイルの属性を編集できます。

一般的には、あなたが取り組んでいるバグの CC にはあなた自身を加えるべきです。まだ加えていないなら、バグのコメント欄の下にある "Add to CC list" チェックボックスにチェックを入れてください。これにより、バグに変更があったときにあなたに E メールが届くようになり、バグ修正の進行状況を把握しやすくなります。

次の行程では、パッチのレビュアーとしてふさわしい人物を見つけ、その人にパッチのレビューを依頼します。

パッチをレビューしてもらう

Mozilla では、十分な水準に達していないパッチがリポジトリに採用されるのを防ぐため、コードレビューという手法を取っています。これによって、可読性、明確性、安全性などといったコードの品質を高く保つことができます。今のところ、ほとんどのパッチは通常のレビューと「スーパーレビュー」の 2 回のレビューを必要とします。レビュアーはコードベースの特定の分野 (「モジュール」) を専門で扱いますが、スーパーレビュアーはどんなパッチでもレビューできます (スーパーレビュアーがそのコードに詳しくない場合には他の人に頼むように言われるかもしれませんが)。

コードベースの中には、レビューの必要条件が他とは異なる分野もあります。js/srctoolkit/browser/ は 1 回しかレビューを必要としません。また、テストについても、正当性を確保するための 1 回のレビューしか必要としません。最初のレビューを依頼する時に、修正しようとしているコードに特殊なレビュー要件が無いかどうか気軽に質問してください。

モジュールオーナーとピアはモジュール内のコードに対するパッチのレビューを行い、あなたのパッチをツリーに入れる作業を手伝います。パッチをレビューしてくれる人を探すには、モジュールとそれに精通する人の一覧を見ると良いでしょう。

レビュアーを探すのに便利な場所はまだあります。あなたが変更しようとしているファイルの CVS ログです。例えばあなたのパッチが主に browser/base/content/browser.js を変更するものである場合、そのファイルの MXR ページの上部にある "CVS Log" というリンクをクリックし、最近そのファイルへのパッチをレビューした人を選んでも通常は差し支えないでしょう。パッチをレビューした人がいる場合、それに対応するチェックインのメッセージには "r=foobar" や "sr=baz" などといったものが書かれているはずです。"foobar" や "baz" は E メールアドレス、または人名を短縮したものです。review 欄にそれを入力すると通常は (必ずではない) 自動補完され、適切な人物にレビューを依頼することができます。もし自動補完されなければ、チェックインコメントに引用されているバグのページを訪れ、レビュアーの E メールアドレスを見つけてください。(通常はその人のコメントには "r=baz" などと書かれています)

レビューやスーパーレビューを依頼するには、添付ファイル (attachment) の Details リンクをクリックします。すると、ページの左側に色々なラベルのついたドロップダウンが表示されます。"review" (もしくは "super-review") とラベルの付いたドロップダウンを "?" に変更して、レビューをして欲しい人の Bugzilla 用メールアドレスをテキストボックスに入力してください (これはパッチを送信するときにも行えます) 。最後に送信することで、実際にフラグが変更され、レビューを要求できます。レビューとスーパーレビューは一度に要求できますし、パッチが十分に小さく、シンプルで、明確であると思うなら、両方のレビューを同じ人に要求することもできます。(もちろん、パッチがそれほどシンプルではないとレビュアーが判断したら、そのレビュアーはどちらかのレビューを他の人に依頼することもあります。)

レビューは多くの場合 1 回では済みません。レビュアーがパッチを承認するに足りると判断するまで、パッチを修正する必要があります。(パッチの承認はフラグを "+" にすることで行われます。フラグが "-" になると、レビューが拒否されたことを表します) これは、特に最初のいくつかのパッチでは、非常によくあることです。レビュアーの提案を受けてパッチを変更し、新しいバージョンのパッチを投稿し、レビューを再要求すれば、最終的には承認を受けることができるでしょう。

レビュアーがレビューのフラグを + に変更しながら、それと同時に、パッチに加えて欲しい変更を述べたコメントを残すことがあります。こういった場合、レビュアーはパッチを変更して欲しいが、再レビューの必要は無いと考えています。パッチに変更を加え、(添付ファイルページの "obsolete" チェックボックスから古いパッチを破棄して) 新しいバージョンを投稿し、(superreview などの) 残りのフラグを前のバージョンと同じ値に設定してください。

また、パッチがレビューされた後、それがコミットされる前に、誰かがそのパッチと競合する変更を加えるということも起こり得ます。もし修正がシンプルかつ非侵略的なものならば (慎重に判断してください) 、新しいバージョンのパッチを投稿するだけで、レビューを再要求する必要はありません。修正が複雑だったり、そのコードに詳しい人にとってわかりずらいものである場合、最後にもう一度レビューを受けるべきでしょう。面倒ですが、それほど多くあることではないので、大抵は我慢できるでしょう。

レビューの要求後、レビュアーが 1 週間ほどしても反応を返さない場合 (残念ながら珍しいことではありません) 、いくつかの選択肢があります。

  • Mozilla の IRC サーバの #developers に行って尋ねるのが最良の選択肢です。多くの人は太平洋夏時間 (PDT) の平日午後および夜間に活動しているので、可能ならばその時間にたずねるのが良いでしょう。
  • レビュアーに直接メールを出し、パッチをレビューする時間があるか、いつレビューできるか、または他にレビューできる人は誰か尋ねることができます。
  • news.mozilla.org の適切なニュースグループで尋ねることもできますが、成功するかどうかはわかりません。
  • 最終的には、他のレビュアーに依頼するのがいいでしょう。

あるバグへの対処方法について聞きたいことがあったら、部分的なパッチであっても遠慮せずに投稿して、質問してください。コードの付いた質問は、コードの付いていない質問とはまったく違う扱いをされます。問題を解決するために行った努力を示すことで、他の人たちが同じように努力してくれる可能性はぐっと高くなります。

パッチをツリーにチェックインする

添付したパッチが r+sr (モジュールによっては r+) になったら、いつでもチェックイン可能です。パッチにいくつかの変更を加えることを条件として r+ にマークされた場合、更新したパッチを添付し、レビューは依頼しないでください。パッチをレビューした人が正しい変更が加えられることを信じているなら、その人はパッチを自分で見る必要はありません。

変更を加えようとしているアプリケーションにパッチを適用してビルドし、起動することと自動テストにパスすることを確認してください。

未テストのパッチを送信するのはコミッターの時間を無駄にし、ツリーを炎上させることすらあります。あなたのパッチに悪い実績があると、時間がかかるのを恐れてパッチのチェックインが後回しにされるかもしれません。また、自分でコミットする権利を得られる可能性も低くなってしまいます。

バグの Keywords 欄に checkin-needed を追加してください。様々な人がこのキーワードが付いたバグを見つけるために検索を実行しているので、1 ~ 2 週間のうちにあなたのパッチはコミットされるでしょう。

適当な時間が経ってもパッチがチェックインされなければ、irc.mozilla.org#developers に入り、そこにいる人にチェックインしてくれるように頼んでみてください。

自分が今までに十分な量のパッチを提供したと思うなら、Mozilla のソースコードのコミット権を得ることを考えてみてください。

ドキュメントのタグと貢献者

Contributors to this page: saneyuki_s, ethertank, Shoot
最終更新者: ethertank,