From: Junio C Hamano <gitster@pobox.com>
To: Kirill Smelkov <kirr@mns.spb.ru>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 5/8] combine-diff: move show_log_first logic/action out of paths scanning
Date: Mon, 03 Feb 2014 15:21:13 -0800 [thread overview]
Message-ID: <xmqqr47jbx5i.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <3f729b3cac37e11e8ec74d88b4caac79f037194b.1391430523.git.kirr@mns.spb.ru> (Kirill Smelkov's message of "Mon, 3 Feb 2014 16:47:19 +0400")
Kirill Smelkov <kirr@mns.spb.ru> writes:
> Judging from sample outputs and tests nothing changes in diff -c output,
Yuck.
I do not think the processing done inside the loop for the first
path (i.e. i==0) before we call show_log(rev) affects what that
called show_log(rev) does, so it probably is a good readability
change.
Thanks.
> and this change will help later patches, when we'll be refactoring paths
> scanning into its own function with several variants - the
> show_log_first logic / code will stay common to all of them.
>
> NOTE: only now we have to take care to explicitly not show anything if
> parents array is empty, as in fact there are some clients in Git code,
> which calls diff_tree_combined() in such a way.
>
> Signed-off-by: Kirill Smelkov <kirr@mns.spb.ru>
> ---
> combine-diff.c | 24 ++++++++++++++----------
> 1 file changed, 14 insertions(+), 10 deletions(-)
>
> diff --git a/combine-diff.c b/combine-diff.c
> index a03147c..272931f 100644
> --- a/combine-diff.c
> +++ b/combine-diff.c
> @@ -1313,6 +1313,20 @@ void diff_tree_combined(const unsigned char *sha1,
> struct combine_diff_path *p, *paths = NULL;
> int i, num_paths, needsep, show_log_first, num_parent = parents->nr;
>
> + /* nothing to do, if no parents */
> + if (!num_parent)
> + return;
> +
> + show_log_first = !!rev->loginfo && !rev->no_commit_id;
> + needsep = 0;
> + if (show_log_first) {
> + show_log(rev);
> +
> + if (rev->verbose_header && opt->output_format)
> + printf("%s%c", diff_line_prefix(opt),
> + opt->line_termination);
> + }
> +
> diffopts = *opt;
> copy_pathspec(&diffopts.pathspec, &opt->pathspec);
> diffopts.output_format = DIFF_FORMAT_NO_OUTPUT;
> @@ -1321,8 +1335,6 @@ void diff_tree_combined(const unsigned char *sha1,
> /* tell diff_tree to emit paths in sorted (=tree) order */
> diffopts.orderfile = NULL;
>
> - show_log_first = !!rev->loginfo && !rev->no_commit_id;
> - needsep = 0;
> /* find set of paths that everybody touches */
> for (i = 0; i < num_parent; i++) {
> /* show stat against the first parent even
> @@ -1338,14 +1350,6 @@ void diff_tree_combined(const unsigned char *sha1,
> diffcore_std(&diffopts);
> paths = intersect_paths(paths, i, num_parent);
>
> - if (show_log_first && i == 0) {
> - show_log(rev);
> -
> - if (rev->verbose_header && opt->output_format)
> - printf("%s%c", diff_line_prefix(opt),
> - opt->line_termination);
> - }
> -
> /* if showing diff, show it in requested order */
> if (diffopts.output_format != DIFF_FORMAT_NO_OUTPUT &&
> opt->orderfile) {
next prev parent reply other threads:[~2014-02-03 23:21 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-03 12:47 [PATCH 0/8] `log -c` speedup (part 2) Kirill Smelkov
2014-02-03 12:47 ` [PATCH 1/8] fixup! combine_diff: simplify intersect_paths() further Kirill Smelkov
2014-02-03 19:40 ` Junio C Hamano
2014-02-03 12:47 ` [PATCH 2/8] tests: add checking that combine-diff emits only correct paths Kirill Smelkov
2014-02-03 23:10 ` Junio C Hamano
2014-02-05 10:36 ` Kirill Smelkov
2014-02-03 12:47 ` [PATCH 3/8] tree-diff: no need to manually verify that there is no mode change for a path Kirill Smelkov
2014-02-03 23:12 ` Junio C Hamano
2014-02-03 12:47 ` [PATCH 4/8] tree-diff: no need to pass match to skip_uninteresting() Kirill Smelkov
2014-02-03 12:47 ` [PATCH 5/8] combine-diff: move show_log_first logic/action out of paths scanning Kirill Smelkov
2014-02-03 23:21 ` Junio C Hamano [this message]
2014-02-03 12:47 ` [PATCH 6/8] combine-diff: Move changed-paths scanning logic into its own function Kirill Smelkov
2014-02-03 12:47 ` [PATCH 7/8] combine-diff: Fast changed-to-all-parents paths scanning Kirill Smelkov
2014-02-03 23:26 ` Junio C Hamano
2014-02-03 23:39 ` Junio C Hamano
2014-02-04 16:34 ` Kirill Smelkov
2014-02-04 18:37 ` Junio C Hamano
2014-02-05 16:51 ` Kirill Smelkov
2014-02-05 17:36 ` Junio C Hamano
2014-02-05 19:14 ` Kirill Smelkov
2014-02-05 19:42 ` Junio C Hamano
2014-02-05 20:22 ` Kirill Smelkov
2014-02-05 22:58 ` Junio C Hamano
2014-02-06 16:22 ` Kirill Smelkov
2014-02-04 0:00 ` Junio C Hamano
2014-02-03 12:47 ` [PATCH 8/8] combine-diff: bail out early, if num_paths=0 Kirill Smelkov
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=xmqqr47jbx5i.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=kirr@mns.spb.ru \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.