ページ

2014/03/15

[Git][GitHub]Pull Request を送る手順、あるいは GPUImage for Android に Pull Request を送った話

CyberAgent/android-gpuimageを使ってみたら
大きめの画像を Bitmap に変換する際に結構時間がかかっていたので
ソースコードを見てみたらPixelBuffer#convertToBitmap
上下反転を直すために全ピクセルをループ回していました。

これでは画像が大きくなるほど処理時間が長くなってしまうので
一旦上下反転した画像を Bitmap に変換して、
その Bitmap を Matrixで更に上下反転させて直しました。
change the way to convert upside down image · ec82668 · wada811/android-gpuimage

GitHub で Pull Request を送る手順

1. リポジトリをフォークする

GitHub で fork する。

2. リポジトリをクローンする

git clone git@github.com:octocat/Spoon-Knife.git

3. 作業ディレクトリに移動する

cd Spoon-Knife

4. 作業用ブランチを切る

git checkout -b Spife

5. ファイルを編集してコミットする

vi README
git add README
git commit README -m "Spife is a spoon, it is also a knife."

6. フォーク元のリポジトリの更新に追従する

6-1. フォーク元のリポジトリの登録(初回のみ)
git remote add upstream git://github.com/octocat/Spoon-Knife.git
6-2. commit 前の差分がある場合は退避する
git stash
6-3. master ブランチに移動する
git checkout master
6-4. upstream/master の変更をローカルの master に pull する
git pull upstream master
6-5. 作業用ブランチに移動する
git checkout Spife
6-6. fork 元の最新版まで rebase する (コンフリクトしたら頑張りましょう)
git rebase master Spife
6-7. stash で退避した差分を元に戻して作業を継続 (コンフリクトしたら頑張りましょう)
git stash pop

7. Pull Request 用に作業用ブランチの commit を1つにまとめる

7-1. 作業用ブランチに移動する
git checkout Spife
7-2. 作業用ブランチを元に Pull Request 用ブランチを切る
git checkout -b featureSpife
7-3. 作業用ブランチ上の fork 元からの差分を1 commitにまとめる
git rebase -i master

8. Pull Request 用ブランチを push する

git push origin featureSpife

9. Pull Request する

GitHub から Pull Request する。

詳しい説明は GitHubへpull requestする際のベストプラクティス - hnwの日記 を読んで下さい。
僕は CyberAgent/android-gpuimage が1年近く放置されていたのと、変更箇所が1ヶ所だけだったので
上の手順の 6 と 7 を省いて実行しました。
CyberAgent さんは Pull Request が来ると Travis CI が動くようです。
Travis CI を使ったことがないのでよくわからないのですが、
結果は設定ファイルがないよ!ということでその後うまく動かなかったのかエラーになりました。
Travis CI - CyberAgent/android-gpuimage - Could not find .travis.yml, using standard configuration.
他の人の Pull Request も同様に失敗しているのでこちら側由来のエラーではないはず。
Pull Request しても反応がないのだったら他で連絡しても多分反応ないし放置することにしました。

Bad End.

おまけ

Pull Request はこれで2回目だけど手順も全然覚えてないし、
git レベルが低くてコミットをまとめるとかコンフリクトを解決するとか
あまりやらないことは記事を書けるレベルに達していないので
とりあえず全体の流れだけ記事に書いてみました。
Pull Request する機会は早々ないと思いますが、これで次からは多少すんなりできるかな?

もっと git レベルを上げるために Fork しない Pull Request で色々な操作を練習して慣れていきたい。
GitHub初心者はForkしない方のPull Requestから入門しよう - QNYP Blog