From: Junio C Hamano <gitster@pobox.com>
To: "Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 3/3] format-patch: learn --[no-]range-diff-notes
Date: Sun, 06 Sep 2026 10:12:35 -0700 [thread overview]
Message-ID: <xmqqcxuq483g.fsf@gitster.g> (raw)
In-Reply-To: <e3b7ef75-08e6-4529-ac75-56f800d2f4a4@app.fastmail.com> (Kristoffer Haugsbakk's message of "Sun, 06 Sep 2026 09:22:27 +0200")
"Kristoffer Haugsbakk" <kristofferhaugsbakk@fastmail.com> writes:
> Seeing as how the doc was unclear and did not spell out how you can
> build two separate list of notes, here’s a draft of a rewrite:
>
> `--range-diff-notes[=<ref>]`::
> `--no-range-diff-notes`::
> Used with `--range-diff`, tweak what notes to display in the
> range diff.
> +
> The default behavior is to display the same notes in the range diff as
> on the patches; see `--notes`. But you can use these options to use a
> different list of notes. For example, say you have given three notes
> refs to `--notes`. At this point those same three notes will be
> displayed in the range diff. But then you pass
> `--range-diff-notes=<ref>`. Now the range diff will only display
> _<ref>_. You can of course pass more refs to this option, just like
> `--notes`. And you can also turn off all notes with
> `--no-range-diff-notes`.
Up to this point it is quite clear how the two interact. Even
though it does not appear in the above paragraph, the rules
essentially are "Without --range-diff-notes, the refs that are
specified by --notes are used for both purposes" and "When you use
--range-diff-notes, --notes and --range-diff-notes give independent
sets of notes, the former is shown only in the output, the latter is
used only for comparison".
But the following paragraph, while it may be correctly describing
what the code does, does not tell me why you would even want to do
so.
For example, if you have --notes=foo --notes=bar always given in an
alias, i.e.
[alias] fmt = format-patch --notes=foo --notes=bar
but in one invocation you would want to use different set of notes
only for comparison, you would
git fmt --range-diff-notes=
if you do not want any notes participate in the comparison, or
git fmt --range-diff-notes=bar
you want only 'bar' to be used in the comparison.
If you had --range-diff-notes=foo in a similar way in an alias,
[alias] fmtr = format-patch --range-diff-notes=foo --notes=bar
you may need a way to tell that 'foo' no longer participates in the
comparison with
git fmtr --no-range-diff-notes
If the rule is that once you say --no-range-diff-notes the internal
state is reset and the command behaves as if no --range-diff-notes
option is ever given [*], then that would still leave --notes=bar so
the command would beave as if
git format-patch --notes=bar
were given, which means bar will now affect both, so if you want
'bar' not to be used for comparison, you would need some way to
pretend as if you said
git format-patch --range-diff-notes= --notes=bar
and ...
> +
> You may want to turn off this notes override behavior after it has been
> activated. Use this sequence to do that:
> +
> ----
> --no-range-diff-notes --range-diff-notes
> ----
> +
> Now the range diff is back to displaying the same notes as the
> patches. Going back to the three `--notes` example: now the range diff
> will show all three notes again.
... may be a way to do so, perhaps?
BUT I think that is a strange interpretation and notation. Normal
people would rather assume, once you said --no-range-diff-notes, you
do not want any notes to be used for range-diff comparison. IOW, I
find the earlier rule [*] that makes --no-range-diff-notes only tell
the command to pretend that no --range-diff-notes is ever given,
which leads to the above conclusion, a source of confusion.
If the rule were "if you say --no-range-diff-notes, you are saying
that you do not want any notes used for range-diff" (and similarly
"if you say --no-notes you are saying that you do not want any notes
used"), would it make the workaround in the last part unnecessary?
Under such a world order,
git fmtr --no-range-diff-notes
would mean that --no-range-diff-notes tells that you do not want any
notes participate in the comparison, so any --notes in the alias
definition of fmtr would be used only for the final display. And
git fmtr --no-range-diff-notes --range-diff-notes
would tell the command that on top of the previous state, you are
adding 0 notes to the set of notes used for comparisons, so it would
be a no op. If it were
git fmtr --no-range-diff-notes --range-diff-notes=bar
then you'd let --notes in the fmtr alias definition to be used for
final display, --range-diff-notes in the fmtr alias definition to be
totally ignored, and bar is used for comparison.
Would that logically make sense and make it easier to understand?
Thanks.
next prev parent reply other threads:[~2026-09-06 17:12 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-24 20:35 [PATCH 0/3] format-patch: learn --[no-]range-diff-notes kristofferhaugsbakk
2026-08-24 20:35 ` [PATCH 1/3] format-patch: simplify get_notes_arg parameters kristofferhaugsbakk
2026-08-24 20:35 ` [PATCH 2/3] revision.h: rename struct member to reflect notes role kristofferhaugsbakk
2026-08-24 20:35 ` [PATCH 3/3] format-patch: learn --[no-]range-diff-notes kristofferhaugsbakk
2026-08-24 22:31 ` Junio C Hamano
2026-08-25 18:36 ` Kristoffer Haugsbakk
2026-08-28 0:31 ` Junio C Hamano
2026-08-28 13:48 ` Kristoffer Haugsbakk
2026-08-28 17:13 ` Junio C Hamano
2026-09-02 13:19 ` Kristoffer Haugsbakk
2026-09-06 7:22 ` Kristoffer Haugsbakk
2026-09-06 13:37 ` D. Ben Knoble
2026-09-06 16:44 ` Kristoffer Haugsbakk
2026-09-06 17:57 ` D. Ben Knoble
2026-09-06 17:12 ` Junio C Hamano [this message]
2026-09-09 18:08 ` Kristoffer Haugsbakk
2026-09-09 19:04 ` 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=xmqqcxuq483g.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=kristofferhaugsbakk@fastmail.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