その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

pull-request がmaster に飛んできたときの対応

Acme::AjiFry にpull-request が飛んできたので、その時の対応を備忘録的に書きます。

自分のリポジトリにpull-request が飛んできたのは生まれて初めてなのでちょっと感動を覚えましたね。
@__papix__ さん、ありがとうございます。

master にpull-request が飛んできたら

master にpull-request が飛んできた時の選択肢としては、
  1. 何も考えずにブラウザ上でmerge する
  2. fork 先のリポジトリごとclone してから動作テストをして、問題がないようであればブラウザ上でmerge する
  3. リポジトリにブランチを切ってからfork 先のリポジトリをpull する
という3つが考えられると思います。

まあ1 はちょっと怖いですね。
2 は選択としては悪くないとは思いますが、ちょっとスマートじゃない感じが。
というわけで今回は3 を選択しました。

やり方は至って簡単

まず、自分のリポジトリに対してブランチを切ってチェックアウトします。
$ git checkout -b foobar

次に、fork 先のリポジトリ (つまり、pull-request の送りもと) の"Git Read-Only" のURL をpull します。
$ git pull <URL of "Git Read-Only">

で、とりあえずpush します。
$ git push origin foobar

ここで、動作テストをします。
ビルドを通したりテストスクリプトを実行してみたりして、所望の機能が実装されているか、
またレグレッションを起こしていないかをチェックしましょう。

良い感じだったらmaster にmerge します。
$ git checkout master
$ git merge foobar

push もしましょう。
$ git push origin master

完了

これでオッケイです。
ついでにISSUE に適当なコメントを付けてCLOSE しておけば良いでしょう。


(ふろく)pull-request の作法について参考にしたWeb サイト

GitHubへpull requestする際のベストプラクティス - hnwの日記
git - 綺麗なpull requestを送るための3つのポイント - Qiita [キータ]


master にpull-request を送る事に関しては賛否両論あるようです。
僕は自分が非collaborator のリポジトリに対してはブランチを切ってpull-request を送るように心がけています。

(ふろく)Acme::AjiFry のはなし

送られてきたpatch のお陰でeval を使わずにAcme::AjiFry::Perl の機能を実現する事が出来たんですが、
`use Acme::AjiFry::Perl` よりも上に書かれている文が消失してしまうという問題が新たに出てきたので、
どうしたもんかと悩んでおります。

@__papix__ さんがパッチとして送ってくれたSource Filters を用いた実装が正解なような感じがするので、
もうしばらく弄ってみたいと思います。