range-diff: treat notes like log
Currently, `range-diff` shows the default notes if no notes-related
arguments are given. This is also how `log` behaves. But unlike
`range-diff`, `log` does *not* show the default notes if
`--notes=<custom>` are given. In other words, this:
git log --notes=custom
is equivalent to this:
git log --no-notes --notes=custom
While:
git range-diff --notes=custom
acts like this:
git log --notes --notes-custom
This can’t be how the user expects `range-diff` to behave given that the
man page for `range-diff` under `--[no-]notes[=<ref>]` says:
> This flag is passed to the `git log` program (see git-log(1)) that
> generates the patches.
This behavior also affects `format-patch` since it uses `range-diff` for
the cover letter. Unlike `log`, though, `format-patch` is not supposed
to show the default notes if no notes-related arguments are given.[1]
But this promise is broken when the range-diff happens to have something
to say about the changes to the default notes, since that will be shown
in the cover letter.
Remedy this by introducing `--show-notes-by-default` that `range-diff` can
use to tell the `log` subprocess what to do.
§ Authors
• Fix by Johannes
• Tests by Kristoffer
† 1: See e.g. 66b2ed09c2
(Fix "log" family not to be too agressive about
showing notes, 2010-01-20).
Co-authored-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
43c8a30d15
commit
2e0d30d928
@ -662,6 +662,20 @@ test_expect_success 'range-diff with multiple --notes' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
# `range-diff` should act like `log` with regards to notes
|
||||
test_expect_success 'range-diff with --notes=custom does not show default notes' '
|
||||
git notes add -m "topic note" topic &&
|
||||
git notes add -m "unmodified note" unmodified &&
|
||||
git notes --ref=custom add -m "topic note" topic &&
|
||||
git notes --ref=custom add -m "unmodified note" unmodified &&
|
||||
test_when_finished git notes remove topic unmodified &&
|
||||
test_when_finished git notes --ref=custom remove topic unmodified &&
|
||||
git range-diff --notes=custom main..topic main..unmodified \
|
||||
>actual &&
|
||||
! grep "## Notes ##" actual &&
|
||||
grep "## Notes (custom) ##" actual
|
||||
'
|
||||
|
||||
test_expect_success 'format-patch --range-diff does not compare notes by default' '
|
||||
git notes add -m "topic note" topic &&
|
||||
git notes add -m "unmodified note" unmodified &&
|
||||
@ -679,6 +693,20 @@ test_expect_success 'format-patch --range-diff does not compare notes by default
|
||||
! grep "note" 0000-*
|
||||
'
|
||||
|
||||
test_expect_success 'format-patch --notes=custom --range-diff only compares custom notes' '
|
||||
git notes add -m "topic note" topic &&
|
||||
git notes --ref=custom add -m "topic note (custom)" topic &&
|
||||
git notes add -m "unmodified note" unmodified &&
|
||||
git notes --ref=custom add -m "unmodified note (custom)" unmodified &&
|
||||
test_when_finished git notes remove topic unmodified &&
|
||||
test_when_finished git notes --ref=custom remove topic unmodified &&
|
||||
git format-patch --notes=custom --cover-letter --range-diff=$prev \
|
||||
main..unmodified >actual &&
|
||||
test_when_finished "rm 000?-*" &&
|
||||
grep "## Notes (custom) ##" 0000-* &&
|
||||
! grep "## Notes ##" 0000-*
|
||||
'
|
||||
|
||||
test_expect_success 'format-patch --range-diff with --no-notes' '
|
||||
git notes add -m "topic note" topic &&
|
||||
git notes add -m "unmodified note" unmodified &&
|
||||
|
Reference in New Issue
Block a user