Show page source of PullRequest #103244

[[PageNavi(NavigationList)]]

= プルリクエスト

== プルリクエストについて

OSDN 内でレポジトリを Fork した場合、関連レポジトリに対して、
自分の変更差分を取り込んで貰うようリクエストすることができます。

このリクエストはチケット内に記録され、もし自動マージが可能であれば、
ワンクリックでレポジトリに反映できます。

OSDN では単一レポジトリ内でブランチ間のプルリクエストを送ることはできません。
プルリクエストの送信は Fork の関係さえあればどちら向きでもできます (Fork 元から Fork 先へマージリクエストを送ることも可能です)。

== プルリクエストの送り方

プルリクエストを送るには、まず対象のレポジトリとの間の差分を確認してください。

[[Thumb(fork-list.png, float=right, size=200x200, caption=Fork一覧の表示例)]]
プロジェクトの場合は、レポジトリビューアの中の「Fork一覧」から、
作業部屋の場合は、メニューの「Fork」→「Fork 情報」から、レポジトリの Fork 関係の一覧を確認できます。

リクエストを送りたいレポジトリの「比較」ボタンを押すと、自分のレポジトリと対象の間で、ブランチ間の diff を見ることができます。
差分が自動マージが可能な場合、ここからプルリクエストを送信することが出来ます。

リクエストは、送信元と送信先ブランチに関連付け付けられ、送信元ブランチ/送信先ブランチのペアごとに、一度にオープンできるリクエストは1つのみです。

== 受け取ったプルリクエストの一覧

現在 OSDN はプロジェクトと作業部屋でチケットシステムの構造が異なるため、
受け取ったプルリクエストも多少扱いが異なります。

プロジェクトの場合、チケットの種別が「パッチ」のものとして登録されます。
作業部屋の場合、"pullrequest" タグ付きのチケットとして登録されます。

種別やタグは後から付け替えたり、プルリクエストではないものにつけることもできますので、
このリストにはプルリクエストでないものが混ざったり、他の場所にプルリクエストが表示されることもあります(内部的に本当にプルリクエストであることを確認できる情報は持っていますが、それだけを一覧する方法はいまのところありません)。

== プルリクエストのマージ及び却下

プルリクエストは一つのチケットアイテムとして記録されます([/ticket/browse.php?group_id=9170&tid=33470 プロジェクトの場合の例])。
プロジェクト、作業部屋ともに、通常のチケットで行える操作と概ね同じことが可能です。
ただし、チケットのクローズの操作に関しては変更され、リクエストのマージもしくは却下のボタンが表示されます。

[[Thumb(merge-btn-group.png, caption=プロジェクトのリクエスト操作ボタン)]]
[[Thumb(merge-btn-pf.png, caption=作業部屋のリクエスト操作ボタン)]]

もし、プルリクエストの送信後にどちらかのブランチにコミットが追加された場合、衝突により自動マージができなくなることがあります。この際は、マージ可能な状態に更新するか、もしくは単にリクエストを一旦却下して、手元のクライアントを使い、手動でマージを行ってください。

マージもしくは却下を行うと、チケットはクローズされ、再オープンすることはできなくなります。
この状態でも、他のチケットと同じようにコメントの追加は可能です。

== 制限事項

 * Git と Mercurial (hg) のみをサポートしています。
 * 外部レポジトリ (sf.net や github などの外部サイトのもの) を Fork したレポジトリでは利用できません。
 * 今の所(内部 Fork は作業部屋しかできないため)プロジェクト間でのプルリクエストの送信はできません。

[[PageNavi(NavigationList)]]