おまぬけ活動日誌

最近のツッコまれどころ

この日誌から Google してもらう


2012年10月22日(Mon) いい天気、停電 [同日]

[git] Pull request用にcommitの一部をとってくる

tDiaryへのプルリクエストを作った時の作業記録。 自分の作業ブランチ weather_hide_empty で tDiaryのプラグインのテストフレームワークをつくりながら、 プラグインのバグ修正もしていました。 今回のPull requestにはプラグインのバグ修正のみを入れたいので ジタバタしてみました。

手元のマシンにブランチを取り寄せる。ノマドなのでw

$ git checkout -b weather_hide_empty origin/weather_hide_empty

Pull requestしたいcommitを確認する

$ git log misc/plugin/??/weather.rb

今回関係しそうなcommitは下記の3つでした。

  • ad688eac7c6571698c36e82bfed0db794b66b1b2
  • 9bda352720bbbe8aac0553d3f9e91da1a9a31074
  • f59be0235d9137acc9f007ce5ee414623d7154ca

それぞれの内容を確認してみると、

$ git show 9bda352720bbbe8aac0553d3f9e91da1a9a31074

9bda352720bbbe8aac0553d3f9e91da1a9a31074ではテストケースも編集していました。うーむ。 同様に、 ad688eac7c6571698c36e82bfed0db794b66b1b2f59be0235d9137acc9f007ce5ee414623d7154caは プラグインのファイルのみの変更のようです。

Pull request用のブランチを作って上記の変更を、簡単な方から取り込んでみます。

$ git checkout master
$ git checkout -b weather_hide_empty_pr
$ git cherry-pick f59be0235d9137acc9f007ce5ee414623d7154ca
$ git cherry-pick ad688eac7c6571698c36e82bfed0db794b66b1b2

さて、次が問題。

error: could not apply 9bda352... Modified to suppress output
from Weather#to_i_html()
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

えーと。

$ git status
# On branch weather_hide_empty_pr
# Changes to be committed:
#
# modified:   misc/plugin/en/weather.rb
# modified:   misc/plugin/ja/weather.rb
#
# Unmerged paths:
#   (use "git add/rm <file>..." as appropriate to mark
resolution)
#
# deleted by us:      test/weather_test.rb
#

2つのファイルをcommitすればいいのかな?

$ git diff --cached

そのようです。

$ git add misc/plugin/en/weather.rb misc/plugin/ja/weather.rb
$ git commit
U test/weather_test.rb
fatal: 'commit' is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>' as
appropriate to mark resolution and make a commit, or use 'git commit -a'.

ふむん。

$ git rm test/weather_test.rb
test/weather_test.rb: needs merge
rm 'test/weather_test.rb'

って消えたん?

$ git commit

今度は進みました。

$ git diff master

変更点も期待どおり。

最後にPull request用にcommitをまとめます。

$ git rebase -i master

エディタに下記のように表示されたので2行目以降のpickをsquashにしました。

pick 5d61585 Modified to suppress output when there is no weather data
pick d2cce60 Fixed name of a variable
pick 0f75fdc Modified to suppress output from Weather#to_i_html() when there is no data

githubに上げてリクエスト。

git push origin weather_hide_empty_pr

プラグインをテストするフレームワークはなんだかもうひとつなのですが、 ひとりで悩んでいても進まないので、後日pull requestを作りますね。


作り手とその取り巻きだけが楽しんでる間は本物じゃない。その中身が理解できない人々の生活を変えてこそ本物だ


zunda <zunda at freeshell.org>