Hatena::ブログ(Diary)

A Day in Serenity @ kenjis

2012-02-07

もし FuelPHP のバグを見つけたら (3)〜バグ修正コードを Pull Request する方法

(2012/07/14) この一連の記事をまとめ加筆修正しアップデートした電子書籍をリリースしました。よろしければ、ご覧ください → 『FuelPHP に貢献する方法』

の続きです。

前の記事を読んでいない場合は、先に読むことをお薦めします。

今日は、バグを修正するための Pull Request の送り方について解説します。

FuelPHP のリポジトリを fork する

まず、対応するリポジトリを GitHub の Web ページに行って fork します。

ここでは、

を fork します。

f:id:Kenji_s:20120205165412p:image

「Fork」ボタンを押して fork します。

以下のように自分のリポジトリが作成されました。デフォルトではリポジトリ名は fork 元と同じになりますが、「core」だけではわかりにくいので「fuel-core」に変更してあります。

f:id:Kenji_s:20120205165432p:image

これで、準備完了です。

fork した自分のリポジトリを手許の PC に clone する

git clone します。

$ git clone git@github.com:kenjis/fuel-core.git

Cloning into fuel-core...

remote: Counting objects: 21591, done.

remote: Compressing objects: 100% (6467/6467), done.

remote: Total 21591 (delta 15071), reused 21164 (delta 14683)

Receiving objects: 100% (21591/21591), 3.33 MiB | 356 KiB/s, done.

Resolving deltas: 100% (15071/15071), done.

FuelPHP のリポジトリを remote リポジトリに追加します。名前は「upstream」とします。

$ cd fuel-core
$ git remote add upstream git://github.com/fuel/core.git
$ git fetch upstream

remote: Counting objects: 42, done.

remote: Compressing objects: 100% (9/9), done.

remote: Total 34 (delta 26), reused 33 (delta 25)

Unpacking objects: 100% (34/34), done.

From git://github.com/fuel/core

* [new branch] 1.0/develop -> upstream/1.0/develop

* [new branch] 1.0/master -> upstream/1.0/master

* [new branch] 1.1/develop -> upstream/1.1/develop

* [new branch] 1.1/master -> upstream/1.1/master

* [new branch] feature/better-hmvc -> upstream/feature/better-hmvc

* [new branch] feature/loader -> upstream/feature/loader

* [new branch] feature/pkg-loader -> upstream/feature/pkg-loader

* [new tag] v1.1 -> v1.1

バグ修正を commit する

Pull Request は開発ブランチに送る必要があります。現在は、1.1/develop になりますので、1.1/develop へ移動します。

$ git checkout 1.1/develop

バグ修正を commit する前に、Pull Request 用のブランチを作成します。1つの Pull Request ごとに必ず 1つのブランチを作成します。もし、ブランチを作成しないと 2つ以上の Rull Request を送信できなくなります。また、後で同じブランチに commit し、GitHub へ push すると、送信した Pull Request に追加されてしまいます。

ブランチ名は何でも構いませんが、ここでは「fix_form」というブランチ名にします。

$ git checkout -b fix_form

バグを修正します。

FuelPHP の コーディング標準 に準拠したコードを書きましょう。

ユニットテストが書ける場合はテストも追加します。fuel/TESTING.md at 1.1/master ? fuel/fuel ? GitHub を参考にします。

変更したファイルを git add し、commit します。sign-off を忘れずに。

$ git commit -s

GitHub へ push する前に

本家リポジトリを clone して、すぐに Pull Request を送る場合はいいのですが、時間が経つと本家での開発が進みます。

Pull Request を送る前に、本家の最新の状態に追随しておきましょう。そうしないと、Pull Request がうまくマージできない可能性があり、取り込まれない可能性があります。

まず、1.1/develop を最新の状態にします。

$ git checkout 1.1/develop
$ git fetch upstream
$ git merge upstream/1.1/develop

1.1/develop での変更を Pull Request 用のブランチに取り込みます。

$ git checkout fix_form
$ git rebase 1.1/develop

コンフリクトが起きなければこれで完了です。

運悪くコンフリクトが起きてしまった場合は、コンフリクトを修正して git add し、

$ git rebase --continue

として rebase を完了させてください。

GitHub へ push する

GitHub の自分のリポジトリに Pull Request 用のブランチを push します。

$ git push origin fix_form

Counting objects: 22, done.

Delta compression using up to 2 threads.

Compressing objects: 100% (12/12), done.

Writing objects: 100% (13/13), 1.55 KiB, done.

Total 13 (delta 9), reused 0 (delta 0)

To git@github.com:kenjis/fuel-core.git

* [new branch] fix_form -> fix_form

Pull Request を送る

GitHub にアクセスし、push したブランチを確認します。

f:id:Kenji_s:20120205165508p:image

ブランチが正しいことを確認し、「Pull Request」ボタンを押します。


f:id:Kenji_s:20120205165534p:image

Pull Requet を送る (送信先) ブランチが正しいことを確認します。もし違う場合は、右側の「Change Commits」ボタンを押すと変更することができます。

タイトルと本文を記入します。「Preview」タブを押せば、プレビューできます。


f:id:Kenji_s:20120205165555p:image

「Files Changed」タブを押せば、変更点を確認できます。

記入が完了したら、「Send pull request」ボタンを押すと Pull Request が送られます。

問題がなければ、本家リポジトリにマージされます。

もし FuelPHP のバグを見つけたら (4)」へつづく。

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証