先日、twicli の search.js プラグインでバグを見つけたので、プログラムを直してみて、作者の @NeoCat さんに GitHub でプルリクエストしてみた。
そしたら @NeoCat さんも別件 (その時発生していた Twitter API の不具合対策 Twitter Status - A known API issue is causing some clients to crash) でほぼ同時にコミットしており、コミットかち合うという事態に。
このままプルされればブランチが出来てしまうはずだけれど、
Twitter / NeoCat: @_wa_ あ、rebaseはこちらでやるので大丈夫ですよ
ということで rebase していただいた。
で、本題はここから。
rebase された本家リポジトリ NeoCat/twicli をプルしたところ、自分のリポジトリのログが以下のようになってしまった (Hg-Git で hg pull と hg glog を実行した結果)。
o チェンジセット: 317:22ffa2526833
| 親: 315:fb686eaff952
| ユーザ: NeoCat <**@**>
| 日付: Wed Aug 25 01:10:29 2010 +0900
| 要約: Fix search tab problem when searching some marks
|
| @ チェンジセット: 316:63a3bf86b644
|/| 親: 313:f147dfa3cb74
| | 親: 315:fb686eaff952
| | ユーザ: NeoCat <**@**>
| | 日付: Tue Aug 24 23:59:55 2010 +0900
| | 要約: Merge remote branch 'git-svn'
| |
o | チェンジセット: 315:fb686eaff952
| | ユーザ: Takashi WADA <**@**>
| | 日付: Tue Aug 24 14:54:01 2010 +0000
| | 要約: fix "remove tab" when search word contains < or >.
| |
o | チェンジセット: 314:31309fc15446
|/ ユーザ: Takashi WADA <**@**>
| 日付: Tue Aug 24 14:53:56 2010 +0000
| 要約: fix "remove tab" when search word contains quot or backslash.
|
o チェンジセット: 313:f147dfa3cb74
| 親: 310:0c6a639d2b9d
| ユーザ: NeoCat <**@**>
| 日付: Tue Aug 24 14:22:34 2010 +0000
| 要約: Skip null tweets (Twitter API bugs?)
|
| o チェンジセット: 312:e09e689299f0
| | タグ: default/master
| | タグ: master
| | ユーザ: Takashi WADA <**@**>
| | 日付: Tue Aug 24 23:43:33 2010 +0900
| | 要約: fix "remove tab" when search word contains < or >.
| |
| o チェンジセット: 311:cf357df7b86f
|/ ユーザ: Takashi WADA <**@**>
| 日付: Tue Aug 24 23:13:16 2010 +0900
| 要約: fix "remove tab" when search word contains quot or backslash.
|
o チェンジセット: 310:0c6a639d2b9d
| ユーザ: NeoCat <**@**>
| 日付: Mon Aug 23 23:06:59 2010 +0000
| 要約: Add FAQ for Post with shift/ctrl+Enter
|
ここで チェンジセット 311:cf357df7b86f と 312:e09e689299f0 は最初に自分が直してコミットしたときのチェンジセット、314:31309fc15446 と 315:fb686eaff952 が rebase されたチェンジセットである。
つまり、同じ修正内容のチェンジセットが 2つ出来てしまい、元のチェンジセットはブランチになってしまったのである。
さて、この場合、311:cf357df7b86f と 312:e09e689299f0 の扱いはどうしたらいいんだろうか。
- 311:cf357df7b86f と 312:e09e689299f0 は search.js のバグを修正するという目的を持ったブランチなのだから、その目的を終えてもそのまま放置しておけばよい。
- 同じ内容のチェンジセットが存在するのは良くないから、 311:cf357df7b86f と 312:e09e689299f0 は消してしまうのがよい。
- 本家に取り込まれた修正なのだから、それに合わせてなんとか本家にマージすべきである。
- マージしたって、そのマージ自体がブランチになってしまうから意味がない。
取り敢えずよく分からないから、今はそのまま放置してるけれど、本来はどうすべきなんだろう。
とにかく、rebase ってやつはややこしいなと思った。
もしここを見た方で、「普通はこうするものだよ」とか知ってる人がいたら教えて下さい…
最近のコメント