git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: overly smart rebase - bug or feature?

From
Junio C Hamano <gitster@pobox.com>
Date
Nov 12, 2008, 22:04 UTC
Message-ID
<7v63msmwi4.fsf@gitster.siamese.dyndns.org>
In-Reply-To
<20081112213920.GB5018@sun.com>
Fedor Sergeev <Fedor.Sergeev@Sun.COM> writes:
Show 9 quoted lines
> 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.

Previous: Fedor Sergeev
Message 7 of 7 in “overly smart rebase - bug or feature?”
  1. Fedor SergeevNov 10, 2008
  2. Junio C HamanoNov 10, 2008
  3. Avery PennarunNov 10, 2008
  4. Fedor SergeevNov 10, 2008
  5. Junio C HamanoNov 10, 2008
  6. Fedor SergeevNov 12, 2008
  7. Junio C HamanoNov 12, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.