Re: [PATCH v2 2/7] add tests for rebasing with patch-equivalence present
- From
Felipe Contreras <felipe.contreras@gmail.com>
- Date
- May 30, 2013, 05:41 UTC
- Message-ID
- <CAMP44s0x8e2xpycOEswnYDBM5WKn=fCp7hcUEniARGVZUw1XkQ@mail.gmail.com>
- In-Reply-To
- <CANiSa6joMXeh7HoGAFXskdXaPZjN+0uHrtN7V85FyQHTGCwZMQ@mail.gmail.com>
On Thu, May 30, 2013 at 12:30 AM, Martin von Zweigbergk <martinvonz@gmail.com> wrote:
Show 27 quoted lines
> On Wed, May 29, 2013 at 12:09 AM, Johannes Sixt <j.sixt@viscovery.net> wrote:
>> Am 5/29/2013 8:39, schrieb Martin von Zweigbergk:
>>> +# f
>>> +# /
>>> +# a---b---c---g---h
>>> +# \
>>> +# d---G---i
>> ...
>>> +test_run_rebase () {
>>> + result=$1
>>> + shift
>>> + test_expect_$result "rebase $* --onto drops patches in onto" "
>>> + reset_rebase &&
>>> + git rebase $* --onto h f i &&
>>> + test_cmp_rev h HEAD~2 &&
>>> + test_linear_range 'd i' h..
>>
>> Isn't this expectation wrong? The upstream of the rebased branch is f, and
>> it does not contain G. Hence, G should be replayed. Since h is the
>> reversal of g, the state at h is the same as at c, and applying G should
>> succeed (it is the same change as g). Therefore, I think the correct
>> expectation is:
>>
>> test_linear_range 'd G i' h..
>
> Good question! It is really not obvious what the right answer is. Some
> arguments in favor of dropping 'G':I think the answer is obvious; G should not be dropped. Maybe it made sense to drop g in upstream, but d fixes an issue, and it makes sense to apply G on upstream.
Git should not make any assumptions, if the user wants G to be dropped, he can easily do that by himself.
I don't think it's easy to implement that code-wise, but I think the ideal behavior is clear.
-- Felipe Contreras