All of lore.kernel.org
 help / color / mirror / Atom feed
From: Derrick Stolee <derrickstolee@github.com>
To: Elijah Newren <newren@gmail.com>
Cc: Philippe Blain <levraiphilippeblain@gmail.com>,
	Git mailing list <git@vger.kernel.org>,
	Derrick Stolee <dstolee@microsoft.com>
Subject: Re: [BUG?] 'git rebase --update-refs --whitespace=fix' incompatible, but not enforced
Date: Wed, 18 Jan 2023 12:03:01 -0500	[thread overview]
Message-ID: <58a70c93-22ed-901c-44f2-3224734c27c3@github.com> (raw)
In-Reply-To: <CABPp-BGLVMoGiCeBMvyRhQmUSDEv8U7_U8=4B=Fh94=p_=QJVQ@mail.gmail.com>

On 1/18/2023 11:24 AM, Elijah Newren wrote:
> On Wed, Jan 18, 2023 at 7:51 AM Derrick Stolee <derrickstolee@github.com> wrote:

>> +       /* Check for arguments that imply --apply before checking --apply itself. */
>> +       if (options.update_refs) {
>> +               const char *incompatible = NULL;
>> +               if (options.git_am_opts.nr)
>> +                       incompatible = options.git_am_opts.v[0];
>> +               else if (options.type == REBASE_APPLY)
>> +                       incompatible = "--apply";
> 
> git_am_opts can include "-q" which is not incompatible since it's also
> supported under the merge backend.

True, but I don't think that happens at this point in time. Right now,
the only things in there should be those placed by the opts parsing.
Things like '-q' get translated later. However, it would be good to be
sure.
 
>> +
>> +               if (incompatible) {
>> +                       int from_config = 0;
>> +                       if (!git_config_get_bool("rebase.updaterefs", &from_config) &&
>> +                           from_config) {
>> +                               warning(_("you have 'rebase.updateRefs' enabled in your config, "
>> +                                         "but it is incompatible with one or more options;"));
>> +                               warning(_("run again with '--no-update-refs' to resolve the issue"));
>> +                       }
>> +                       die(_("options '%s' and '%s' cannot be used together"),
>> +                           "--upate-refs", incompatible);
>> +               }
>> +       }
> 
> We already have imply_merge() to catch the range of incompatibilities;
> can we just use it?

That would be great! I didn't realize that.

>> +
>>         if (trace2_is_enabled()) {
>>                 if (is_merge(&options))
>>                         trace2_cmd_mode("interactive");
>> diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
>> index 462cefd25df..8681c8a07f8 100755
>> --- a/t/t3404-rebase-interactive.sh
>> +++ b/t/t3404-rebase-interactive.sh
>> @@ -2123,6 +2123,18 @@ test_expect_success '--update-refs: check failed ref update' '
>>         test_cmp expect err.trimmed
>>  '
>>
>> +test_expect_success '--apply options are incompatible with --update-refs' '
>> +       for opt in "--whitespace=fix" "-C1" "--apply"
>> +       do
>> +               test_must_fail git rebase "$opt" --update-refs HEAD~1 2>err &&
>> +               grep "options '\''--upate-refs'\'' and '\''$opt'\'' cannot be used together" err &&
>> +
>> +               test_must_fail git -c rebase.updateRefs=true rebase "$opt" HEAD~1 2>err &&
>> +               grep "options '\''--upate-refs'\'' and '\''$opt'\'' cannot be used together" err &&
>> +               grep "you have '\''rebase.updateRefs'\'' enabled" err || return 1
>> +       done
>> +'
>> +
> 
> t3422 exists specifically for checking for incompatibilities of such
> options; the test should go over there.
> 
> I have both changes over at
> https://github.com/gitgitgadget/git/pull/1466; it doesn't include the
> "--no-update-refs" hint, but maybe that's good enough?  If so, I can
> submit it.  If not, do you want to alter or adopt some parts of my
> patch and submit a v2?

It sounds like you have a better handle on this and should take it
from here. I look forward to your patch.

Thanks,
-Stolee

  reply	other threads:[~2023-01-18 17:03 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-17 22:02 [BUG?] 'git rebase --update-refs --whitespace=fix' incompatible, but not enforced Philippe Blain
2023-01-18 15:51 ` Derrick Stolee
2023-01-18 16:16   ` Phillip Wood
2023-01-18 16:24   ` Elijah Newren
2023-01-18 17:03     ` Derrick Stolee [this message]
2023-01-18 18:07       ` Philippe Blain

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=58a70c93-22ed-901c-44f2-3224734c27c3@github.com \
    --to=derrickstolee@github.com \
    --cc=dstolee@microsoft.com \
    --cc=git@vger.kernel.org \
    --cc=levraiphilippeblain@gmail.com \
    --cc=newren@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 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.