openSUSE:Build Service 内の Devel プロジェクトについて
devel プロジェクトの定義
devel プロジェクト とは、技術的にはパッケージのメタデータ内でのプロジェクトの参照を意味する言葉で、その参照先のプロジェクトで、開発とテストが行なわれていることを示すものです。この仕組みにより、リリースマスターが受け取るはずの様々な貢献を個別に検証することができるようになります。このような アップストリームの定義 は、構築やソースの管理そのものには特に意味のないもので、ソースコードを探すためのヒント情報として使うことができる程度のものです。
devel プロジェクトには、下記のような意味があります:
- 様々なパッケージに対して、従来は SUSE メンテナとしてまとめられていた、メンテナンス作業担当者 (1 人またはグループ) を定義することができます。担当者は、アップストリームプロジェクトで規定されるユーザ一覧で管理します。
- ツールやパッケージ作成者に対して、 (openSUSE:Factory などの) ディストリビューション本体で提供される古いパッケージではなく、最新版のパッケージを直接利用することができるようになります。
- (主に submit) リクエスト処理内で実施していた追加のレビューが不要になります。その代わり、変更点の送信はアップストリームプロジェクト内の所有者が実施します。
- 通常の (一般的な貢献者からの) 送信は、そのパッケージを詳しく知る人々が最初にチェックすることになるため、ディストリビューションの所有者の負担を減らすことができます。
実装例
パッケージのメタデータには、下記のような任意指定の要素を含めることができます:
<devel project="home:adrianSuSE:Factory"/>
上記は、パッケージに対して何らかの貢献を行ないたい場合、まずは home:adrianSuSE:Factory プロジェクトを参照すべきであることを示しています。また、ブランチの作成や送信リクエストなどを実施するツールでも、上記で指定したプロジェクトの所有者がそれらを取り扱ってレビューを実施し、問題がなければ openSUSE:Factory 宛に送信することを意味しています。
このようなアップストリームの定義は単なる補足情報であり、できれば有用であってほしい存在のデータです。このような定義によって作業が制限されたりすることはありません。 openSUSE:Factory に対して、直接マージ要求を送信することもできます (たとえばアップストリームプロジェクトの所有者が何も反応しないような場合など) 。
使用例
openSUSE:Factory パッケージにおける変更の送信例
下記に示すのは、プロジェクトやパッケージに対して直接書き込むことのできないユーザが、そのプロジェクトやパッケージ宛に変更点を送信し、議論し、受け入れてもらうまでの流れを示しているものです。最終的に openSUSE:Factory に対して送信する手順になっていますが、他のプロジェクトに送信してもかまいません。
概要: あるユーザが、 openSUSE Factory ディストリビューション内にある libqt4 という名前のパッケージに対してパッチを追加したり、バージョンアップをしたい場合の例です。
- osc co openSUSE:Factory libqt4 (osc co libqt4 と実行してもかまいません。この場合も openSUSE:Factory から取得します)
- osc は Devel Project の定義を読み込み、 KDE:Qt44 というプロジェクト名であることを判断します。
- osc は KDE:Qt44 プロジェクト内にある libqt4 をチェックアウトします (Devel Project の定義を無視するように切り替えることもできます) 。
- 必要に応じてソースコードを修正します。
- osc ci
- サーバは、ログインしているユーザが KDE:Qt44 に書き込むことができないため、拒否の応答を返却します。
- osc は送信リクエストを送信するかどうかを尋ねます。
- ここでは はい と答えたものとします。
- osc は API を利用して、自分用のプロジェクト home:<user>:Factory (もちろん異なるプロジェクトを選択することもできます) を作成します。
- home:<user>:Factory プロジェクトは、 KDE:Qt44 リポジトリ内にあるすべてのパッケージを利用して構築します。
- osc は API を利用して、プロジェクト内にソースリンクとパッチから構成される libqt4 パッケージを作成します。
- osc は KDE:Qt44 に対してマージ要求を作成します。
- KDE:Qt44 の所有者は、さらなる変更を希望するため、いったん質問事項 (たとえば rpm マクロに対する質問) 付きで拒否するものとします。
- リクエストは refused (拒否済み) の状態になります。
- ユーザは再度 home:<user>:Factory/libqt4 にチェックアウトします。
- osc では、主に quilt を使用して、ソースコードの編集やパッチの更新などを支援します。
- osc ci で再度新しいパッチを送信します。
- osc は再度マージ要求を作成します。
- KDE:Qt44 は再度マージ要求を確認し、受け入れるものとします。
- osc コマンドを利用して変更点をマージします。
- 上記のコマンドを実行することで、マージ要求を完了/受け入れ済みとしてマークします。
- KDE:Qt44 の所有者は、他の変更点と合わせて、後日その変更点を openSUSE:Factory に送信します。