From: Sergey Organov <sorganov@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Alex Henrie <alexhenrie24@gmail.com>,
Git mailing list <git@vger.kernel.org>
Subject: Re: Why doesn't `git log -m` imply `-p`?
Date: Fri, 30 Apr 2021 17:00:13 +0300 [thread overview]
Message-ID: <87v9837tzm.fsf@osv.gnss.ru> (raw)
In-Reply-To: <xmqqy2d0cr5l.fsf@gitster.g> (Junio C. Hamano's message of "Fri, 30 Apr 2021 13:50:14 +0900")
Junio C Hamano <gitster@pobox.com> writes:
> Junio C Hamano <gitster@pobox.com> writes:
>
>> Sergey Organov <sorganov@gmail.com> writes:
>>
>>> Yep, but --diff-merges=m doesn't imply -p either, though it does produce
>>> diff output without -p, for merge commits only.
>>
>> I misspoke without thinking it through. It is absolutely wrong for
>> the "-m" option (or "--diff-merges=m" for that matter) to imply
>> "-p".
>>
>> $ git log --stat --summary
>>
>> would show "diff", but the kind of "diff" requested is not a textual
>> patch but just diffstat and the summary of new/removed files, and
>> the "diff" is shown only for single-parent commits, and it omits
>> "diff" for merge commits. Adding "-m" to this command line is *not*
>> a request to show the textual patch. It is to ask "diff" to be
>> shown pairwise with each of the parent.
>>
>> $ git log -m --stat --summary
>>
>> It is probably OK to special case "-m" given alone without any other
>> option [*1*] that specifies what kind of "diff" is requested and
>> make it imply "-p". But unconditionally flipping "-p" on only
>> because you saw "-m" (or "--diff-merges=m" for that matter) is just
>> wrong.
>
> Luckily,
>
> $ git log [--stat] --diff-merges=first-parent master..seen
>
> seems to do almost the right thing, with respect to the "It is
> probably OK to special case" I gave above.
I believe any special-casing is to be a last resort, and definitely is
not the right thing to do in this particular case.
>
> It only "enables diff" for merge commits, which does not quite feel
> right and we may want to do the same "enable diff" for single parent
> commits, but the good part is that it does not blindly imply "-p".
>
> It seems to do the "enable diff" the right way by honoring other
> command line options that specify the format of the diff, so with
> "--stat" included in the sample command line above, we get the
> diffstat for single parent commits (because we ask for "--stat" from
> the command line to show it throughout the history) and also for
> merge commits (because --diff-merges=first-parent does *not* blindly
> turn the textual patch '-p' on).
Good to know! I must admit I did nothing special in this regard, just
paid attention to avoid breaking any existing logic, at least knowingly.
>
>> [Footnote]
>>
>> *1* They are not limited to "-p", "--stat" and "--summary", but
>> you'd need to also pay attention to "--raw", "--name-only", etc.)
>
> I've merged the so/log-diff-merge topic to 'master', with this
> (possibly) known breakage that it does not do anything for single
> parent commits. We may want to fix this last mile before the
> release that is scheduled to happen around early June.
I have no idea what the breakage is or could be. Do we have any relevant
tests in place already, or can somebody suggest some to check for
possible breakage?
> Note that I didn't check if you are doing the right thing for all
> formats, or if I was lucky and --stat was only one of them you paid
> attention to, when you needed to notice all others that you don't.
> But if you used the same logic that allows "git show" to by default
> give "-p/--cc" output while "git show --stat" to squelch the patch
> output, you should be OK.
In fact I didn't do anything specific to --stat, nor to other options
you mention (--raw, --name-only, --summary), so I'd expect all of them
still work the same way they were before my --diff-merges series. Need
to be checked anyway, sure thing, and that gets us back to the questions
of tests. I personally don't know what expectations are, so it's hard
for me to implement needed tests.
Thanks,
-- Sergey Organov
next prev parent reply other threads:[~2021-04-30 14:00 UTC|newest]
Thread overview: 130+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-29 1:44 Why doesn't `git log -m` imply `-p`? Alex Henrie
2021-04-29 3:22 ` Junio C Hamano
2021-04-29 12:38 ` Sergey Organov
2021-04-29 15:25 ` Alex Henrie
2021-04-29 16:35 ` Sergey Organov
2021-04-29 17:24 ` Alex Henrie
2021-04-29 19:07 ` Sergey Organov
2021-05-04 20:09 ` Felipe Contreras
2021-05-04 20:34 ` Sergey Organov
2021-04-29 23:27 ` Junio C Hamano
2021-04-30 4:50 ` Junio C Hamano
2021-04-30 14:00 ` Sergey Organov [this message]
2021-05-01 0:41 ` Junio C Hamano
2021-05-03 17:42 ` Sergey Organov
2021-05-04 1:15 ` Junio C Hamano
2021-05-04 9:10 ` Sergey Organov
2021-05-04 12:38 ` Junio C Hamano
2021-05-04 14:18 ` Sergey Organov
2021-05-05 0:20 ` Junio C Hamano
2021-05-05 13:43 ` Sergey Organov
2021-05-06 0:27 ` Junio C Hamano
2021-05-06 12:59 ` Sergey Organov
2021-05-06 20:29 ` Junio C Hamano
2021-05-06 20:48 ` Sergey Organov
2021-05-07 1:31 ` Alex Henrie
2021-05-10 12:11 ` Sergey Organov
2021-05-10 16:56 ` Alex Henrie
2021-05-10 15:34 ` [PATCH 0/6] diff-merges: let -m imply -p Sergey Organov
2021-05-10 15:34 ` [PATCH 1/6] t4013: add test for "git diff-index -m" Sergey Organov
2021-05-10 15:34 ` [PATCH 2/6] diff-merges: move specific diff-index "-m" handling to diff-index Sergey Organov
2021-05-11 4:09 ` Junio C Hamano
2021-05-11 5:23 ` Junio C Hamano
2021-05-11 5:41 ` Junio C Hamano
2021-05-11 13:43 ` Sergey Organov
2021-05-10 15:34 ` [PATCH 3/6] git-svn: stop passing "-m" to "git rev-list" Sergey Organov
2021-05-10 15:34 ` [PATCH 4/6] stash list: stop passing "-m" to "git list" Sergey Organov
2021-05-10 15:34 ` [PATCH 5/6] diff-merges: rename "combined_imply_patch" to "merges_imply_patch" Sergey Organov
2021-05-10 15:34 ` [PATCH 6/6] diff-merges: let -m imply -p Sergey Organov
2021-05-11 4:14 ` Junio C Hamano
2021-05-11 4:56 ` Junio C Hamano
2021-05-11 14:03 ` Sergey Organov
2021-05-11 17:13 ` Alex Henrie
2021-05-11 18:46 ` Sergey Organov
2021-05-11 19:53 ` Alex Henrie
2021-05-11 20:27 ` Sergey Organov
2021-05-12 1:16 ` Felipe Contreras
2021-05-11 18:31 ` Elijah Newren
2021-05-11 19:00 ` Sergey Organov
2021-05-11 19:56 ` Elijah Newren
2021-05-11 20:32 ` Sergey Organov
2021-05-11 20:43 ` Junio C Hamano
2021-05-11 21:38 ` Sergey Organov
2021-05-11 23:40 ` Junio C Hamano
2021-05-19 21:44 ` Jonathan Nieder
2021-05-20 20:39 ` Sergey Organov
2021-05-21 18:14 ` Felipe Contreras
2021-05-11 16:29 ` Sergey Organov
2021-05-17 12:57 ` Sergey Organov
2021-05-11 16:30 ` Sergey Organov
2021-05-19 21:48 ` Jonathan Nieder
2021-05-19 22:03 ` Sergey Organov
2021-05-19 23:32 ` Junio C Hamano
2021-05-20 13:14 ` Sergey Organov
2021-05-20 18:50 ` Jonathan Nieder
2021-05-20 19:38 ` Sergey Organov
2021-05-17 15:58 ` [PATCH v1 0/9] " Sergey Organov
2021-05-17 15:58 ` [PATCH v1 1/9] t4013: test that "-m" alone has no effect in "git log" Sergey Organov
2021-05-17 15:58 ` [PATCH v1 2/9] t4013: test "git -m --raw" Sergey Organov
2021-05-18 3:27 ` Bagas Sanjaya
2021-05-18 12:13 ` Sergey Organov
2021-05-17 15:58 ` [PATCH v1 3/9] t4013: test "git -m --stat" Sergey Organov
2021-05-17 15:58 ` [PATCH v1 4/9] t4013: test "git diff-index -m" Sergey Organov
2021-05-17 15:58 ` [PATCH v1 5/9] diff-merges: move specific diff-index "-m" handling to diff-index Sergey Organov
2021-05-17 20:10 ` Junio C Hamano
2021-05-17 20:24 ` Sergey Organov
2021-05-17 20:29 ` Junio C Hamano
2021-05-17 21:00 ` Sergey Organov
2021-05-17 15:58 ` [PATCH v1 6/9] git-svn: stop passing "-m" to "git rev-list" Sergey Organov
2021-05-17 15:58 ` [PATCH v1 7/9] stash list: stop passing "-m" to "git list" Sergey Organov
2021-05-17 15:58 ` [PATCH v1 8/9] diff-merges: rename "combined_imply_patch" to "merges_imply_patch" Sergey Organov
2021-05-17 15:58 ` [PATCH v1 9/9] diff-merges: let "-m" imply "-p" Sergey Organov
2021-05-17 19:51 ` [PATCH v1 0/9] diff-merges: let -m imply -p Junio C Hamano
2021-05-17 20:11 ` Sergey Organov
2021-05-18 3:18 ` Bagas Sanjaya
2021-05-18 12:03 ` Sergey Organov
2021-05-18 12:17 ` Sergey Organov
2021-05-18 14:17 ` Junio C Hamano
2021-05-18 15:52 ` Sergey Organov
2021-05-19 11:45 ` [PATCH v2 " Sergey Organov
2021-05-19 11:45 ` [PATCH v2 1/9] t4013: test that "-m" alone has no effect in "git log" Sergey Organov
2021-05-19 11:45 ` [PATCH v2 2/9] t4013: test "git log -m --raw" Sergey Organov
2021-05-19 11:45 ` [PATCH v2 3/9] t4013: test "git log -m --stat" Sergey Organov
2021-05-19 11:45 ` [PATCH v2 4/9] t4013: test "git diff-index -m" Sergey Organov
2021-05-19 11:45 ` [PATCH v2 5/9] diff-merges: move specific diff-index "-m" handling to diff-index Sergey Organov
2021-05-19 11:45 ` [PATCH v2 6/9] git-svn: stop passing "-m" to "git rev-list" Sergey Organov
2021-05-19 11:45 ` [PATCH v2 7/9] stash list: stop passing "-m" to "git log" Sergey Organov
2021-05-19 11:45 ` [PATCH v2 8/9] diff-merges: rename "combined_imply_patch" to "merges_imply_patch" Sergey Organov
2021-05-19 11:45 ` [PATCH v2 9/9] diff-merges: let "-m" imply "-p" Sergey Organov
2021-05-20 21:46 ` [PATCH v3 00/10] diff-merges: let -m imply -p Sergey Organov
2021-05-20 21:46 ` [PATCH v3 01/10] t4013: test that "-m" alone has no effect in "git log" Sergey Organov
2021-05-20 21:46 ` [PATCH v3 02/10] t4013: test "git log -m --raw" Sergey Organov
2021-05-20 21:46 ` [PATCH v3 03/10] t4013: test "git log -m --stat" Sergey Organov
2021-05-20 21:46 ` [PATCH v3 04/10] t4013: test "git diff-tree -m" Sergey Organov
2021-05-20 21:46 ` [PATCH v3 05/10] t4013: test "git diff-index -m" Sergey Organov
2021-05-20 21:46 ` [PATCH v3 06/10] diff-merges: move specific diff-index "-m" handling to diff-index Sergey Organov
2021-05-20 21:47 ` [PATCH v3 07/10] git-svn: stop passing "-m" to "git rev-list" Sergey Organov
2021-05-20 21:47 ` [PATCH v3 08/10] stash list: stop passing "-m" to "git log" Sergey Organov
2021-05-20 21:47 ` [PATCH v3 09/10] diff-merges: rename "combined_imply_patch" to "merges_imply_patch" Sergey Organov
2021-05-20 21:47 ` [PATCH v3 10/10] diff-merges: let "-m" imply "-p" Sergey Organov
2021-08-05 3:16 ` Jonathan Nieder
2021-08-06 1:45 ` [PATCH] Revert 'diff-merges: let "-m" imply "-p"' Jonathan Nieder
2021-08-06 17:21 ` Junio C Hamano
2021-08-06 17:55 ` Junio C Hamano
2021-08-06 19:57 ` Jonathan Nieder
2021-08-08 17:55 ` Junio C Hamano
2021-08-17 9:13 ` Sergey Organov
2021-08-17 22:10 ` Junio C Hamano
2021-08-18 8:56 ` Sergey Organov
2021-08-19 18:50 ` Junio C Hamano
2021-08-19 18:51 ` Junio C Hamano
2021-08-20 10:24 ` Sergey Organov
2021-08-07 1:55 ` Jonathan Nieder
2021-08-07 6:49 ` Johannes Sixt
2021-08-07 13:51 ` Jonathan Nieder
2021-08-07 17:00 ` Junio C Hamano
2021-08-07 18:08 ` Jonathan Nieder
2021-08-08 0:42 ` Junio C Hamano
2021-08-17 9:17 ` Sergey Organov
2021-08-16 9:09 ` [PATCH v3 10/10] diff-merges: let "-m" imply "-p" Sergey Organov
[not found] <CANvKV6anT0MV7GDeY_Cd2r+BwvMjsTdmjK+s_DKth7ZqL0XRUQ@mail.gmail.com>
2021-05-19 17:03 ` Why doesn't `git log -m` imply `-p`? Sergey Organov
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=87v9837tzm.fsf@osv.gnss.ru \
--to=sorganov@gmail.com \
--cc=alexhenrie24@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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;
as well as URLs for NNTP newsgroup(s).