Thread (1 message) 1 message, 1 author, 2016-06-15

Re: overly smart rebase - bug or feature?

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:45:38

Fedor Sergeev [off-list ref] writes:
Please, correct me if I'm wrong:

  - by default rebase uses "simplified" merge, which (roughly speaking) 
    simply goes around patching parent with changes from either branches A and B

  - rebase -m applies 'recursive' merge (default merge strategy) which is 
    kind of smarter and determines a conflict in my case

  - literally the same happens when I do merge instead of rebase 
If "the same" means "always use 'recursive' merge, without 'am -3'
(mis)behaviour seen in rebase", then yes.
  - cherry-pick fails just because "patch B" can not apply to A and that is
    literally why rebase started falling out to *some* merge first hand
I do not know about this part.  Rebase _conceptually_ does cherry-pick but
uses a different implementation.
If the above is true then can you, please, answer the following questions:
I'll answer the one that cannot be answered without knowing history.  I
suspect answers to your other questions are found in the doc set.
  - does rebase perform simplified merge only because of speed considerations?
Historical accident.  Originally rebase was only "format-patch | am",
i.e. lift a patch from the commits to be rebased, apply them in order.

Later, "am -3" was invented that allows you to apply patches with fuzz by
using 3-way merge at the content level, which was successfull and rebase
was taught about using it.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help