Help us understand the problem. What is going on with this article?

PostgreSQLコミュニティへのパッチの投げ方

More than 1 year has passed since last update.

はじめに

PostgreSQLコミュニティへの関わり方やPostgreSQLコミュニティでの活動について何度か講演させていただく機会があり、何名かの方から具体的な手順を教えてほしいとの声もいただきました。PostgreSQLコミュニティでは開発にgithub等は使っておらず、コミュニティ内でのコミュニケーションは基本メーリングリストを利用していたり、Commit FestというPostgreSQLコミュニティ独自の営みを通して新しい機能を開発してるなど、など最初は少し難しく感じるかもしれませんので、基本的な手順を紹介したいと思います。
本記事では、以下の手順を紹介してPostgreSQLコミュニティへパッチを出す方法を解説します。

  1. 事前準備
    1. メーリングリストへの登録
    2. ソースコードの用意
  2. パッチの準備
    1. ソースコードを改変
    2. パッチファイルの作成
  3. パッチの投稿
    1. コミュニティへ出すメールの作成
    2. コミュニティへメールを送信
  4. (おまけ) Commit Festへの登録方法
  5. URL集

合わせてこちらもお読み下さい。

1.事前準備

1-1. メーリングリストへの登録

PostgreSQLコミュニティにおけるコミュニケーションは基本的にはメーリングリストです。トピック毎にメーリングリストが分かれており、開発に関する議論はすべてpgsql-hackersで行われます。
こちらのフォームからpgsql-hackersに登録します。

ML登録フォーム.PNG

1-2. ソースコードの用意

PostgreSQLのソースコードはgitで管理されており、リポジトリはgit.postgresql.org/git/postgresql.gitですので、ここからgit cloneします。git clone完了後はmasterブランチにいることを確認します。masterブランチはPostgreSQLの開発版コードを管理するブランチです。その他のRELX_Y_STABLEは各バージョンの安定版ブランチです。

ソースコードの入手
$ git clone git://git.postgresql.org/git/postgresql.git
$ cd postgresql
$ git branch
* master

2.パッチの準備

2-1. ソースコードを改変

ソースコードを変更します。ソースコードが最新状態でない場合は、git pull origin masterを実行してから変更を開始します。

2-2. パッチファイルの作成

作成した機能はmasterブランチからの差分をpatchファイルとして保存します。patchファイルの作り方は、git diff、git format-patchなど好きな方法で構いません。例えば以下は、git diffからパッチを作成する例です。

patchファイルの作成
$ git diff master --stat
 src/backend/commands/vacuumlazy.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
$ git diff master > vacuum_new_feature.patch

2-3. パッチ提出前のチェック

提出するパッチは最低限以下の項目を満たしているようにしましょう。

3.パッチの投稿

3-1. コミュニティへ出すメールの作成

新しい機能を提案する際メールの本文には、以下の内容を入れるようにすると良いと思います。

  • どんな機能であるか
    • 機能の使い方、必要であれば内部的な実装や作った機能のアーキテクチャなどを記載します。
  • なぜその機能が必要なのか、ユースケースなど
    • ユーザにどのようなメリットが有るか、どういうときに役に立つ機能であるか等をしっかり記載します。
  • 性能改善のための機能であれば、そのベンチマーク結果
    • このパッチをコミットするとこんなにPostgreSQLが早くなるぞ!をしっかり示します。

3-2. コミュニティへメールを送信

宛先は1-1で登録した開発用メーリングリスト(pgsql-hackers)を指定し、2-2で作成したパッチを添付してメールを送信します。コミュニティメンバからの反応を待ちましょう!

4. Commit Festへの登録方法

提案したパッチはCommit Festに登録することができます。Commit Festの説明はこちらも参考にしてみてください。Commit Festにパッチを登録することで、パッチのステータスを管理することができ、かつ誰にもレビューされないまま埋もれる、といった状況を回避することができます。新機能だけでなく、バグ修正パッチも登録することができるので、PostgreSQLコミュニティに対して出したパッチは漏れ無くCommit Festに登録することをお勧めします。

また、masterブランチのHEADは常に変更されるため、しばらくすると提出したパッチがHEAD当たらなくなる可能性があります。Commit Festにパッチを登録するとCommit Fest用のCIが周り、自動的にパッチがHEADにあたるか、そしてリグレッションテストが成功するかをテストしてくれます。状況はPostgreSQL Patch Testerから確認できますので、定期的に確認しましょう。

4-1 PostgreSQLの公式ページでアカウントを作成する。

Commit Festにパッチを登録する際に、アカウントが必要なのでここから登録します。ユーザ名、メールアドレス入れるだけなのですぐ登録できます。

4-1 Commitfests Appにアクセス

現在開催しているCommit Festはこちら

commitfestPNG.PNG

4-2 パッチを登録

  1. ページ上部の「New Patch」ボタンをクリック
  2. 「Description」、「Topic」、「Specify thread msgid」を埋める
    • 「Description」は、3-2でコミュニティに出したメールのタイトルとかでOKです。
    • 「Topic」は、用意されたカテゴリから選択します。今回は「Miscellaneous」にします。
    • 「Specify thread msgid」は、パッチが添付されているメールを選択します。「Find thread」ボタンをクリックし、メールのタイトルでメールを検索することができるので、見つけたら「Attach thread」ボタンをクリックします。
  3. 「Create patch」ボタンをクリック
  4. 「Authros」欄に4-1で作成したアカウント名を入れて、自分をパッチの作成者に登録します。

5.リンク集

PostgreSQL 11の開発は始まったばかりです。この機会にぜひPostgreSQLコミュニティに飛び込んでみましょう!
なにか分からないことがありましたら@sawada_masahikoまでご連絡下さい。

sawada_masahiko
Database, PostgreSQLが好き。 自分のブログ(github.ioの方)に移行しました。
https://masahikosawada.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした