All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Sixt <j.sixt@viscovery.net>
To: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Cc: Phil Hord <phil.hord@gmail.com>,
	Jon Seymour <jon.seymour@gmail.com>,
	J Robert Ray <jrobertray@gmail.com>,
	Thomas Rast <trast@student.ethz.ch>,
	"git@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: rebase -p loses amended changes
Date: Tue, 10 Apr 2012 09:14:22 +0200	[thread overview]
Message-ID: <4F83DDCE.1040000@viscovery.net> (raw)
In-Reply-To: <CAOeW2eHHW6de1qcnajV7DLzWyiSJyh+ZpMbhQU-1WKnRuSeNhg@mail.gmail.com>

Am 4/5/2012 18:16, schrieb Martin von Zweigbergk:
> On Tue, Apr 3, 2012 at 11:30 PM, Johannes Sixt <j.sixt@viscovery.net> wrote:
>> IMO, it is a sub-optimal implementation of rebase -p that it attempts to
>> redo the merge. A better strategy is to just replay the changes between
>> the first parent and the merge commit, and then generate a new merge commit:
>>
>>   git diff-tree -p M^ M | git apply --index &&
>>   git rev-parse M^2 > .git/MERGE_HEAD &&
>>   git commit -c M
>>
>> This would side-step all the issues discussed here, no?
> 
> Maybe. How would it handle the following, though?
> 
> With this history
> 
>           .-e-.
>          /     \
>       .-c---d---f
>      /
> a---b---g
> 
> , "git rebase -p --onto g b f" produces
> 
> 
>               .-e'.
>              /     \
> a---b---g---c'--d'--f'
> 
> If the merge was interactive (or was made interactive due to merge
> conflicts), e'-c' (the diff between c' and e') might be very different
> from e-c. Creating f' by replaying f-d on top of d' would lose any
> changes done in e'-c' as compared to e-c, no?

If I understand correctly, rebase -p is not intended to move branchy
history to a new fork point (that would be the task of the still
hypothetical generic sequencer). Its purpose is only to keep the merges of
other "unrelated" topics, e.g.:

...--o--o        <- bugfix topic (needed by my-topic)
         \
    x--y--M--z   <- my-topic
   /
--A--o--o--B     <- master

to be turned into

...--o--o--------.        <- bugfix topic (needed by my-topic)
                  \
             x'-y'-M'-z'  <- my-topic
            /
--A--o--o--B              <- master

-- Hannes

  parent reply	other threads:[~2012-04-10  7:15 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <592E2EEC-6CBA-48D6-8D44-34A971DD78EC@gmail.com>
2012-03-31  5:55 ` rebase -p loses amended changes Jon Seymour
2012-03-31  9:35   ` Thomas Rast
2012-03-31  9:39     ` Jon Seymour
2012-04-03 18:55       ` J Robert Ray
2012-04-03 21:43         ` Jon Seymour
2012-04-03 22:02           ` Junio C Hamano
2012-04-03 22:09           ` Phil Hord
2012-04-04  6:30             ` Johannes Sixt
2012-04-04 17:11               ` Junio C Hamano
2012-04-04 20:26                 ` Junio C Hamano
2012-04-04 22:55                   ` Jon Seymour
2012-04-04 22:59                     ` Junio C Hamano
2012-04-04 23:05                       ` Jon Seymour
2012-04-04 23:20                         ` Junio C Hamano
2012-04-05 16:16               ` Martin von Zweigbergk
2012-04-05 16:33                 ` Jon Seymour
2012-04-05 16:43                   ` Martin von Zweigbergk
2012-04-10  7:14                 ` Johannes Sixt [this message]
2012-03-30 21:31 J Robert Ray
2012-03-30 22:49 ` Thomas Rast

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F83DDCE.1040000@viscovery.net \
    --to=j.sixt@viscovery.net \
    --cc=git@vger.kernel.org \
    --cc=jon.seymour@gmail.com \
    --cc=jrobertray@gmail.com \
    --cc=martin.von.zweigbergk@gmail.com \
    --cc=phil.hord@gmail.com \
    --cc=trast@student.ethz.ch \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.