From: Arnaud Fontaine <arnau@debian.org>
To: git@vger.kernel.org
Cc: Junio C Hamano <gitster@pobox.com>,
Martin von Zweigbergk <martin.von.zweigbergk@gmail.com>
Subject: Re: [PATCH] Do not ignore merge options in interactive rebase
Date: Mon, 24 Jun 2013 16:40:28 +0900 [thread overview]
Message-ID: <87bo6wyn0z.fsf@duckcorp.org> (raw)
In-Reply-To: <7vr4fvkxew.fsf@alter.siamese.dyndns.org> (Junio C. Hamano's message of "Fri, 21 Jun 2013 13:43:03 -0700")
Junio C Hamano <gitster@pobox.com> writes:
> Arnaud Fontaine <arnau@debian.org> writes:
>
>> Merge strategy and its options can be specified in `git rebase`, but
>> with `--interactive`, they were completely ignored.
>
> And why is it a bad thing? If you meant s/--interactive/-m/ in the
> above, then I can sort of understand the justification, though.
Sorry, it was not clear. I meant that you can do 'rebase -m --strategy
recursive'. But with 'rebase --interactive -m --strategy recursive', '-m
--strategy recursive' is ignored. To me, this is not consistent because
the behavior is different in interactive mode... Personally, I needed
to specify the strategy and its options while using interactive mode and
it seems I'm not the only one[0].
>> diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
>> old mode 100644
>> new mode 100755
>
> I see an unjustifiable mode change here.
Sorry about that, I fixed it.
>> index f953d8d..c157fdf
>> --- a/git-rebase--interactive.sh
>> +++ b/git-rebase--interactive.sh
>> @@ -239,7 +239,16 @@ pick_one () {
>>
>> test -d "$rewritten" &&
>> pick_one_preserving_merges "$@" && return
>> - output git cherry-pick $empty_args $ff "$@"
>> +
>> + if test -n "$do_merge"
>> + then
>
> So you _did_ mean "rebase -m"?
I really meant 'rebase --interactive -m'. do_merge is set to true if
either '--strategy' or '-m' or '-X' is given according to git-rebase.sh.
>> + test -z "$strategy" && strategy=recursive
>> + output git cherry-pick --strategy=$strategy \
>
> This is a bad change.
>
> I would understand if the above were:
>
> git cherry-pick ${strategy+--strategy=$strategy} ...
>
> in other words, "if there is no strategy specified, do not override
> the configured default that might be different from recursive"
> (pull.twohead may be set to resolve).
Indeed, I did not know about that. I wrongly thought it was a good idea
to do the same as both git-rebase (when -X is given) and
git-rebase--merge which do the same test ('test -z "$strategy" &&
strategy=recursive'). However after checking more carefully, I guess
that, for the former case, it is because only recursive currently takes
options, whereas, for the latter case, it is to call a default
git-rebase-$strategy.
>> + $(echo $strategy_opts | sed "s/'--\([^']*\)'/-X\1/g") \
>
> Is it guaranteed $startegy_opts do not have a space in it?
strategy_opts may be something like (git-rebase.sh): "'--foo' '--bar'",
but I'm not sure what is wrong if there is a space in it though.
> There is a call to "git merge" that uses "${strategy+-s $strategy}",
> but it does not seem to propagate the strategy option. Does it need a
> similar change? It seems that the first step might be to factor out
> these calls to the "git cherry-pick" and "git merge" to helper
> functions to make it easier to call them with -s/-X options in a
> consistent way.
As far as I understand, yes. I changed it. As it is really short, I just
added an if/else inside the script itself, not sure if that's ok...
>> + $empty_args $ff "$@"
>> + else
>> + output git cherry-pick $empty_args $ff "$@"
>> + fi
>
> It seems that there is another call to "git cherry-pick" in the script
> ("git grep" for it). Does it need a similar change?
As far as I understand, yes. So I changed it as well.
I have sent the fixed patch in my next email. Many thanks for the
review!
Cheers,
--
Arnaud Fontaine
[0] http://git.661346.n2.nabble.com/git-rebase-interactive-does-not-respect-merge-options-td7500093.html
next prev parent reply other threads:[~2013-06-24 7:40 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-21 5:23 [PATCH] Do not ignore merge options in interactive rebase Arnaud Fontaine
2013-06-21 20:43 ` Junio C Hamano
2013-06-24 7:40 ` Arnaud Fontaine [this message]
2013-06-24 7:47 ` Arnaud Fontaine
2013-06-25 17:04 ` Junio C Hamano
2013-06-25 20:28 ` Junio C Hamano
2013-07-02 8:05 ` Arnaud Fontaine
2013-07-02 8:05 ` Arnaud Fontaine
2013-06-24 14:16 ` Junio C Hamano
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=87bo6wyn0z.fsf@duckcorp.org \
--to=arnau@debian.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=martin.von.zweigbergk@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).