From: Junio C Hamano <gitster@pobox.com>
To: Johannes Gilger <heipei@hackvalue.de>
Cc: Git ML <git@vger.kernel.org>, Thomas Rast <trast@student.ethz.ch>,
Jeff King <peff@peff.net>
Subject: Re: [PATCH] Notes: Connect the %N flag to --{show,no}-notes
Date: Sat, 10 Apr 2010 14:51:55 -0700 [thread overview]
Message-ID: <7v1venvuv8.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <1270935032-10536-1-git-send-email-heipei@hackvalue.de> (Johannes Gilger's message of "Sat\, 10 Apr 2010 23\:30\:32 +0200")
Johannes Gilger <heipei@hackvalue.de> writes:
> diff --git a/builtin/log.c b/builtin/log.c
> index b706a5f..029d7b8 100644
> --- a/builtin/log.c
> +++ b/builtin/log.c
> @@ -58,9 +58,9 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix,
> usage(builtin_log_usage);
> argc = setup_revisions(argc, argv, rev, opt);
>
> - if (!rev->show_notes_given && !rev->pretty_given)
> + if (!rev->show_notes_given)
> rev->show_notes = 1;
I am puzzled by this change and its possible interaction with codepaths
that do not have anything to do with %N. When there is no show-notes and
an explicit --pretty, we do not want to have rev->show_notes set.
Admittedly, the real end result we want to see in such a case is just that
notes are not shown (and rev->show_notes being false is one natural way to
achieve that), and if ...
> - if (rev->show_notes)
> + if (rev->show_notes && (!rev->pretty_given || rev->show_notes_given))
> init_display_notes(&rev->notes_opt);
... this change is about ensuring the same outcome by not initializing the
notes tree, that may work, but it somehow feels iffy. It would leave some
codepaths (and another one you just added, I think, with the other hunk in
this patch) that say "do this only when rev->show_notes is set" and some
other codepaths that say "unconditionally try to show notes and rely on
the caller not have initialized the notes tree when it is not wanted." Is
that what is going on?
Unfortunately I don't think of a better and cleaner solution offhand
(perhaps such a cleaner solution would involve adding a bit more state in
the rev structure, but I haven't thought things through).
> diff --git a/notes.c b/notes.c
> index e425e19..ad14a8b 100644
> --- a/notes.c
> +++ b/notes.c
> @@ -1183,7 +1183,9 @@ void format_display_notes(const unsigned char *object_sha1,
> struct strbuf *sb, const char *output_encoding, int flags)
> {
> int i;
> - assert(display_notes_trees);
> + if(!display_notes_trees)
> + init_display_notes(NULL);
> +
> for (i = 0; display_notes_trees[i]; i++)
> format_note(display_notes_trees[i], object_sha1, sb,
> output_encoding, flags);
> diff --git a/pretty.c b/pretty.c
> index 6ba3da8..8e828a1 100644
> --- a/pretty.c
> +++ b/pretty.c
> @@ -775,9 +775,10 @@ static size_t format_commit_one(struct strbuf *sb, const char *placeholder,
> }
> return 0; /* unknown %g placeholder */
> case 'N':
> - format_display_notes(commit->object.sha1, sb,
> - git_log_output_encoding ? git_log_output_encoding
> - : git_commit_encoding, 0);
> + if (c->pretty_ctx->show_notes)
> + format_display_notes(commit->object.sha1, sb,
> + git_log_output_encoding ? git_log_output_encoding
> + : git_commit_encoding, 0);
> return 1;
> }
>
> --
> 1.7.0.2.201.g80978
next prev parent reply other threads:[~2010-04-10 21:52 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-05 11:55 [PATCH] Initialize notes trees if %N is used and no --show-notes given Johannes Gilger
2010-04-06 5:32 ` Jeff King
2010-04-06 9:27 ` Thomas Rast
2010-04-06 11:19 ` Johannes Gilger
2010-04-06 11:52 ` Thomas Rast
2010-04-06 16:22 ` Jeff King
2010-04-07 6:18 ` Junio C Hamano
2010-04-07 6:36 ` Jeff King
2010-04-10 7:05 ` [PATCH] pretty.c: Don't expand %N without --show-notes Johannes Gilger
2010-04-10 20:00 ` Junio C Hamano
2010-04-10 21:30 ` [PATCH] Notes: Connect the %N flag to --{show,no}-notes Johannes Gilger
2010-04-10 21:51 ` Junio C Hamano [this message]
2010-04-10 22:08 ` Jeff King
2010-04-11 14:54 ` [PATCH] pretty: Initialize notes if %N is used Johannes Gilger
2010-04-12 8:56 ` Jeff King
2010-04-13 8:59 ` [PATCHv2] " Johannes Gilger
2010-04-13 10:03 ` Jeff King
2010-04-13 10:36 ` Johannes Gilger
2010-04-13 10:57 ` [PATCHv3] " y
2010-04-13 10:57 ` y
2010-04-13 11:01 ` Johannes Gilger
2010-04-13 11:07 ` Jeff King
2010-04-13 11:26 ` [PATCHv4] " Johannes Gilger
2010-04-13 20:01 ` Junio C Hamano
2010-04-13 20:31 ` [PATCHv5] " Johannes Gilger
2010-04-10 22:20 ` [PATCH] Notes: Connect the %N flag to --{show,no}-notes Johannes Gilger
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=7v1venvuv8.fsf@alter.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=heipei@hackvalue.de \
--cc=peff@peff.net \
--cc=trast@student.ethz.ch \
/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).