Re: [PATCH] doc: pull: improve rebase=false documentation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2023-09-15 23:12, Linus Arver wrote:
Junio C Hamano <gitster@xxxxxxxxx> writes:
Linus Arver <linusa@xxxxxxxxxx> writes:

Aside: interestingly, there appears to be a "--no-rebase" option that
means "--rebase=false" (see cd67e4d46b (Teach 'git pull' about --rebase,
2007-11-28)):

       --no-rebase
           This is shorthand for --rebase=false.
...
How about adding something like this instead as the very first paragraph
for this flag?

Supplying "--rebase" defaults to "--rebase=true". Running git-pull
    without arguments implies "--rebase=false", unless relevant
    configuration variables have been set otherwise.

Phrase nit.

	$ git pull origin

does run the command with arguments.

Ah, good catch.

What you mean is "running
git-pull without any --rebase arguments implies --no-rebase",

Right (modulo your "--rebase arguments" -> "--rebase option" correction
in your follow-up email).

but
that is saying "not giving --rebase=<any> and not giving --rebase
means not rebasing", which makes my head spin.

Me too.

"--no-rebase" as a command line option does have use to defeat
configured pull.rebase that is not set to "false"

Yes, I noticed this too after digging around a bit more after I sent my
message. Thanks for clarifying for the record.

and allowing
"pull.rebase" to be set to "false" does have use to defeat settings
for the same variable made by lower-precedence configuration file.

Indeed! I did not think of this. IOW, Git can be configured in
multiple places (the "pull.rebase" setting in ~/.gitconfig can be
overridden by the same config in ~/myrepo/.git/config).

"--rebase=false" does not have any reason to exist, except for
making the repertoire of "--rebase=<kind>" to be complete.

Agreed. In a sense, the docs for "--rebase=false" should say that it is
a synonym for "--no-rebase" (because "--no-rebase" came first,
historically), and not the other way around (that "--no-rebase" is
shorthand for "--rebase=false").

So, I am still not sure if saying "'git pull' (no other arguments
and no configuration) is equivalent to 'git pull --rebase=false'"
adds much value.

Fair point. That is, there are so many gotchas and "edge case"-like
behaviors to consider here, so the statement "'git pull' (no other arguments
and no configuration) is equivalent to 'git pull --rebase=false'" is an
oversimplification that can be misleading. I agree.

If --no-rebase and --rebase=false are explained in terms of why
these options that specify such an unnatural action (after all, you
say "do this" or "do it this way", but do not usually have to say
"do not do it that way") need to exist.

If I were writing this patch, I would rearrange the existing text
like so:

 * Update the description of "--no-rebase" *NOT* to depend on
   --rebase=false.  Instead move it higher and say

   - The default for "git pull" is to "merge" the other history into
     your history, but optionally you can "rebase" your history on
     top of the other history.

   - There are configuration variables (pull.rebase and
     branch.<name>.rebase) that trigger the optional behaviour, and
     when you set it, your "git pull" would "rebase".

   - The "--no-rebase" option is to defeat such configuration to
     tell the command to "merge" for this particular invocation.

 * Update the description of "--rebase=<kind>" and move the
   paragraph that begins with "When false" to the end, something
   like:

   - `--rebase` alone is equivalent to `--rebase=true`.
   - When set to 'merges'...
   - When set to 'interactive'...
   - See `pull.rebase`, ..., if you want to make `git pull` always
     rebase your history on top of theirs, instead of merging their
     history to yours.
   - `--rebase=false` is synonym to `--no-rebase`.

I think this captures the finer details while still preserving the
spirit of Dragan's original patch, so SGTM.

@Dragan if you are OK with doing the (much more substantial) change as
suggested, please do. Thanks!

Sure, thanks. I'll put together v2 of the patch in the next couple of days, taking into account all the fine details of the awesome feedback provided by both of you, so we can have it discussed and refined further.



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux