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

Re: [PATCH 1/1] Add --first-parent support to interactive rebase.

From
Björn Steinbrink <b.steinbrink@gmx.de>
Date
Oct 31, 2007, 05:53 UTC
Message-ID
<20071031055303.GB3326@atjola.homenet>
In-Reply-To
<7vodefj2lk.fsf@gitster.siamese.dyndns.org>
On 2007.10.30 22:05:27 -0700, Junio C Hamano wrote:
> Your MUA seems to mark the UTF-8 message you are sending out as
> 8859-1, which means your name in the message gets corrupt.

Hm, that would be git-send-email then, anything I need to configure? (Actually I don't see it marking the message as anything)

Show 13 quoted lines
> Björn Steinbrink <B.Steinbrink@gmx.de> writes:
> 
> > By default, rebase will take all commits from the branch that is to be
> > rebased which are missing in upstream. The new --first-parent option
> > allows to just follow the first parent and thus completely ignore
> > merges.
> >
> > Additionally, when used together with --preserve-merges (which is the
> > more useful use-case) it will no longer rebase the commits from the
> > merged-in branches, but instead redo the merge with the original
> > parents.
> >
> > That means that:
Given this situation:
> >      ---H------I topicB
> >     /    \      \
> > ...
> > does no longer become:
Which results in:
Show 7 quoted lines
> >                 -H'--------I'
> >                /  \         \
> >               D'---E'---F'---G' topicA
> >              /
> >     A---B---C master
> >      \
> >       H---I topicB
When you do "git-rebase -p -i master topicA"
You can now also get:
> >     A---B---C master
> > ...
> >         ---------H---------I topicB
When you do "git-rebase -p -i --first-parent master topicA"
That's better, right?
Show 8 quoted lines
> And crucially, you forgot to say "... when you do X".
> 
> I am assuming that you meant:
> 
>     This (picture) becomes this (picture) instead of this (picture)
>     when you run "git rebase -p -m master topicA".
> 
> but without it, the nice ASCII drawings loses their value.
:-/
> It is somewhat disturbing that this treats the first parent too
> special.

The original use-case for the "-p -i --first-parent" case was a question on #git, where someone had sth. like this:

   o---o---o---o---o remote/branch
        \           \
     o---o---o---o---o topicA
    /
   o---o---o master trunk

Now that guy was using git-svn to dcommit into svn from master. To dcommit the changes from topicA he had to have that based on master, and he wanted to preserve the merges from remote/branch to have them squashed when dcommitted to svn. So what he wanted was:

     ...---o---o---o---o---o remote/branch
                \           \
             o---o---o---o---o topicA
            /
   o---o---o master trunk

The default behaviour of rebase would totally flat out the history and instead of two sqaush merges (which he wanted), svn would've seen a huge amount of commits comning from remote/branch. And the plain -p behaviour would have duplicated all those branches from remote/branch for no good reason, so I came up with that --first-parent thing.

Better ideas are welcome, I just don't know git well enough to come up with anything better...

Thanks, Björn

Previous: Junio C HamanoNext: Dmitry Potapov
Message 7 of 18 in “Add --first-parent support to interactive rebase.”
  1. 1/1 Add --first-parent support to interactive rebase.Björn Steinbrink, Oct 31, 2007
  2. Johannes SchindelinOct 31, 2007
  3. Björn SteinbrinkOct 31, 2007
  4. Johannes SchindelinOct 31, 2007
  5. Wincent ColaiutaOct 31, 2007
  6. Junio C HamanoOct 31, 2007
  7. Björn SteinbrinkOct 31, 2007
  8. Dmitry PotapovOct 31, 2007
  9. Karl HasselströmOct 31, 2007
  10. Dmitry PotapovOct 31, 2007
  11. Jeff KingOct 31, 2007
  12. Björn SteinbrinkOct 31, 2007
  13. Junio C HamanoOct 31, 2007
  14. Jeff KingOct 31, 2007
  15. Junio C HamanoOct 31, 2007
  16. Jeff KingNov 1, 2007
  17. Junio C HamanoNov 1, 2007
  18. Jeff KingNov 1, 2007

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.