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

Re: [PATCH] docs: Clarify what git-rebase's "--preserve-merges" does

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 31, 2015, 16:28 UTC
Message-ID
<xmqqh9t1rv0r.fsf@gitster.dls.corp.google.com>
In-Reply-To
<87lhidlebw.fsf@javad.com>
Sergey Organov <sorganov@gmail.com> writes:
Show 5 quoted lines
> 1. How to calculate the set of commits to rebase.
>
> 2. How to rebase merge commits.
>
> Can we leave (1) for a while at its current state and focus on (2)?

Perhaps. You would have to be careful though, so let me think aloud a bit...

Suppose you started from an upstream history whose tip was B, and you worked on merging some changes X an Y you made earlier on a side branch.

         X---Y
        /     \
   O---A---B---Z---

In the meantime, the upstream history has advance and now it looks like this:

   O---A---B---C---D

You want to forward-port the change done by X, Y on the side branch and its merge Z on top of D, right?

In other words, you want to have this:
         X-----------Y
        /             \
   O---A---B---C---D---Z'

In this case, replaying the difference going from B to Z on top of D may be better than redoing a merge between Y and D, in that the former will carry evil merges and resolution of conflict forward.

I wonder if it will be the right way to get a correct result to apply the difference to go from B to Z on top of an old commit when you are side-porting.

Imagine you want to backport the same X-Y history by redoing the merge Z on top of another child of O (i.e. A's sibling). That is, you start from this:

         X---Y
        /     \
   O---A---B---Z---
    \
     M---N
and would want to create this:
    
    
   O           X'--Y'
    \         /     \    
     M---N---A'--B'--Z'--

As long as everything down to the merge-base of the parents of the original merge (in this example, merge-base across Y and B that are Z's parents, which is A) is being transplanted, "apply the difference going from B to Z, on top of B', to obtain Z'" should work, I would think.

Previous: Sergey OrganovNext: Sergey Organov
Message 8 of 19 in “docs: Clarify what git-rebase's "--preserve-merges" does”
  1. docs: Clarify what git-rebase's "--preserve-merges" doesSebastian Schuberth, Mar 26, 2015
  2. Junio C HamanoMar 26, 2015
  3. Sebastian SchuberthMar 26, 2015
  4. Junio C HamanoMar 26, 2015
  5. Sergey OrganovMar 26, 2015
  6. Johannes SixtMar 26, 2015
  7. Sergey OrganovMar 31, 2015
  8. Junio C HamanoMar 31, 2015
  9. Sergey OrganovMar 31, 2015
  10. Junio C HamanoMar 31, 2015
  11. Sergey OrganovApr 1, 2015
  12. Junio C HamanoApr 1, 2015
  13. Sergey OrganovApr 2, 2015
  14. Sebastian SchuberthMar 30, 2015
  15. Junio C HamanoMar 30, 2015
  16. Sebastian SchuberthMar 30, 2015
  17. Junio C HamanoMar 30, 2015
  18. Junio C HamanoMar 30, 2015
  19. Sebastian SchuberthMar 30, 2015

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.