一括 am に失敗した件

master branch と develop branch の差が単純に merge できない程度になってきた。
以下なソレさえ微妙。

$ for i in ~/tmp/patch.20130812/* ; do git am $i; done

以下な出力がナニ。

error: patch failed: src/jp/shuri/yamanetoshi/MainActivity.java:204
error: src/jp/shuri/yamanetoshi/MainActivity.java: patch does not apply
Patch failed at 0001 Separate password input dialog layout
The copy of the patch that failed is found in:
   /Users/rms/Public/hoge/.git/rebase-apply/patch
When you have resolved this problem, run "git am --resolved".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

あわわわ、と言いつつ以下。

$ git am --abort

一つづつヤります。

いきなり

最初から、だったことが判明。ちょっと master から branch を切り出して開発 branch を merge してみるか。結果としては二箇所 conflict してました。多分こっちの方が対応としては早そうなのでこちらで云々な方向。

とは言え

一部、正常に merge できてない差分があったりしたのですがこれは一体どーゆー意味だろ。一応取得した diff で確認ができる、というだけでも助かるのかどうか。
とりあえず master に merge する折には

  • patch 取得
  • git merge で merge するけど CONFLICT 発生前提
  • git diff --cached と取得した patch を突き合わせ (面倒)

なのかなぁ。ちょい微妙。やっぱ GitFlow はアレなのかどうか。

そして

再度 master で同じコトをヤるのもアレなので、この branch に commit を作成して master に merge の方向です。

それにしても

patch 取得して git am よりも branch をそのまんま git merge する方が良い、というのはびっくりしました。それ以外にもびっくりな挙動がありましたが。
なんとなくバグッてるカンジなので再現試験してみつつ、報告が入れられれば良いのかもしれませんが、リポジトリ自体が公開できないものだけに、再現のさせ方がアレです。