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

Re: Rebase options via git pull

From
Sergey Organov <sorganov@gmail.com>
Date
May 17, 2021, 12:33 UTC
Message-ID
<87k0nxv8tt.fsf@osv.gnss.ru>
In-Reply-To
<87zgwtr7i4.fsf@evledraar.gmail.com>
Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes:
Show 50 quoted lines
> On Fri, May 14 2021, Sergey Organov wrote:
>
>> Đoàn Trần Công Danh <congdanhqx@gmail.com> writes:
>>
>>> On 2021-05-13 18:49:03-0600, Alex Henrie <alexhenrie24@gmail.com> wrote:
>>>> On Thu, May 13, 2021 at 7:23 AM Sergey Organov <sorganov@gmail.com> wrote:
>>>> >
>>>> > Hello,
>>>> >
>>>> > Is there a way to specify additional options for "git rebase" when it's
>>>> > invoked via:
>>>> >
>>>> >   git pull --rebase
>>>> >
>>>> > ? What if rebase is used implicitly due to "pull.rebase" being set
>>>> > accordingly?
>>>> >
>>>> > In particular, I'd like to be able to:
>>>> >
>>>> >   git pull --rebase --no-fork-point
>>>> >
>>>> > but it doesn't work.
>>>> 
>>>> It would be cumbersome, but you could run `git config rebase.forkPoint
>>>> false` before pulling and `git config rebase.forkPoint true` after.
>>>
>>> Or, for this *specific* case:
>>>
>>> 	git -c rebase.forkpoint=false pull --rebase
>>
>> That's nice, thanks! Doesn't solve entire issue, but definitely better
>> than nothing.
>>
>> Probably add generic cmd.<cmd>.opts config support, so that I can say:
>>
>>   git -c cmd.rebase.opts="--no-fork-point --empty=keep" pull --rebase
>>
>> Thoughts?
>
> It's been discussed before (but I did not dig up the discussions,
> sorry). It's been considered a bad idea, because our commands are a
> mixture of plumbing/porcelain commands and switches, so we want to be
> able to reliably invoke say ls-tree with some switches internally,
> without config tripping us up.
>
> Of course we could make this sort of thing work by selectively ignoring
> the config, but such a thing would be equal in complexity to the effort
> of assering that it's safe to introduce new rebase.* config in the
> codebase for every switch it has now, but with a less friendly interface
> both for git itself and users.

I don't see much complexity here. We'd then just need to effectively invoke ls-tree internally like this:

   git -c 'cmd.ls-tree.opts=' ls-tree
Not a big deal.
>
> I.e. instead of rebase.noForkPoint=<bool> we'd need to to getopt parsing
> on some cmd.rebase.opts string.

As this is meant to be generic, then yes, every command will first parse corresponding config option, then command-line options, rebase not being any different.

Show 5 quoted lines
>
> I don't see why in this case what I suggested elsewhere in the thread
> wouldn't be viable, i.e. you specify --rebase or --merge to "pull", and
> that affects how we interpret the rest of the options. I haven't tried
> it though, so there may be hidden gotchas there I haven't thought of.

This is the best solution for "git pull" indeed, but the above is a generic feature that could provide solution in cases like this, where immediate specific solution is not (yet) available.

Thanks, -- Sergey Organov

Previous: Ævar Arnfjörð BjarmasonNext: Đoàn Trần Công Danh
Message 10 of 13 in “Rebase options via git pull”
  1. Sergey OrganovMay 13, 2021
  2. Junio C HamanoMay 13, 2021
  3. Ævar Arnfjörð BjarmasonMay 14, 2021
  4. Sergey OrganovMay 15, 2021
  5. Alex HenrieMay 14, 2021
  6. Đoàn Trần Công DanhMay 14, 2021
  7. Alex HenrieMay 14, 2021
  8. Sergey OrganovMay 14, 2021
  9. Ævar Arnfjörð BjarmasonMay 17, 2021
  10. Sergey OrganovMay 17, 2021
  11. Đoàn Trần Công DanhMay 17, 2021
  12. Sergey OrganovMay 17, 2021
  13. Đoàn Trần Công DanhMay 17, 2021

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.