From: Junio C Hamano <gitster@pobox.com>
To: Stefan Beller <stefanbeller@gmail.com>
Cc: git@vger.kernel.org, Stefan Beller <sbeller@google.com>
Subject: Re: [PATCH 05/10] diff.c: reintroduce diff_flush_patch for all files
Date: Mon, 12 Sep 2016 17:05:43 -0700 [thread overview]
Message-ID: <xmqqsht4wtns.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <1473572530-25764-6-git-send-email-stefanbeller@gmail.com> (Stefan Beller's message of "Sat, 10 Sep 2016 22:42:05 -0700")
Stefan Beller <stefanbeller@gmail.com> writes:
> From: Stefan Beller <sbeller@google.com>
>
> ---
This shows why 04/10 should have had the overall plan for these two
steps. We want a short-and-sweet name "diff-flush-patch" to mean
"flush all the queued diff elements" so rename the singleton one
from diff-flush-patch to diff-flush-patch-filepair to make room in
04/10 and then introduce the "diff-flush-patch-all" in 05/10.
I just said with the above explanation the changes in 04/10 and
05/10 become undertandable, which is a bit different from being
justifiable. "diff_flush_raw()", "diff_flush_stat()", etc. are
_all_ about a single filepair. I'd rather see diff_flush_patch()
to be also about a single filepair.
It may be helpful to have a helper that calls diff_flush_patch() for
all filepairs in the queue, but can't that function get a new name
instead? By definition, it will be called much less often than a
pair-wise one, so it can afford to have a longer name.
diff_flush_patch_queue() or something, perhaps? I am not sure if it
should be diff_flush_queue_patch(), or even
diff_flush_queue(struct diff_options *o, diff_flush_fn fn);
where diff_flush_fn is
typedef void (*diff_flush_fn)(struct diff_filepair *p,
struct diff_options *o, void *other_data)
that can be used to flush the queue by calling any of these
filepair-wise flush functions like diff_flush_{raw,stat,checkdiff,patch}.
This last approach might be overkill, but if you want to try it,
you'd need a preparatory step to give an unused "void *other" to
diff_flush_{raw,patch,checkdiff} as diff_flush_stat() is an oddball
that needs an extra "accumulator" pointer. I actually wonder if
that "diffstat" pointer should become part of "struct diff_options",
though. Anyway.
> diff.c | 17 ++++++++++++-----
> 1 file changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/diff.c b/diff.c
> index 85fb887..87b1bb2 100644
> --- a/diff.c
> +++ b/diff.c
> @@ -4608,6 +4608,17 @@ void diff_warn_rename_limit(const char *varname, int needed, int degraded_cc)
> warning(rename_limit_advice, varname, needed);
> }
>
> +static void diff_flush_patch(struct diff_options *o)
> +{
> + int i;
> + struct diff_queue_struct *q = &diff_queued_diff;
> + for (i = 0; i < q->nr; i++) {
> + struct diff_filepair *p = q->queue[i];
> + if (check_pair_status(p))
> + diff_flush_patch_filepair(p, o);
> + }
> +}
> +
> void diff_flush(struct diff_options *options)
> {
> struct diff_queue_struct *q = &diff_queued_diff;
> @@ -4702,11 +4713,7 @@ void diff_flush(struct diff_options *options)
> }
> }
>
> - for (i = 0; i < q->nr; i++) {
> - struct diff_filepair *p = q->queue[i];
> - if (check_pair_status(p))
> - diff_flush_patch_filepair(p, options);
> - }
> + diff_flush_patch(options);
> }
>
> if (output_format & DIFF_FORMAT_CALLBACK)
next prev parent reply other threads:[~2016-09-13 0:05 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-11 5:42 [PATCH 00/10] Another preparatory series for rename detection Stefan Beller
2016-09-11 5:42 ` [PATCH 01/10] diff: move line ending check into emit_hunk_header Stefan Beller
2016-09-12 23:35 ` Junio C Hamano
2016-09-11 5:42 ` [PATCH 02/10] diff: emit_{add, del, context}_line to increase {pre,post}image line count Stefan Beller
2016-09-12 23:47 ` Junio C Hamano
2016-09-11 5:42 ` [PATCH 03/10] diff.c: drop tautologous condition in emit_line_0 Stefan Beller
2016-09-12 23:53 ` Junio C Hamano
2016-09-16 23:04 ` Stefan Beller
2016-09-11 5:42 ` [PATCH 04/10] diff.c: rename diff_flush_patch to diff_flush_patch_filepair Stefan Beller
2016-09-12 23:53 ` Junio C Hamano
2016-09-11 5:42 ` [PATCH 05/10] diff.c: reintroduce diff_flush_patch for all files Stefan Beller
2016-09-13 0:05 ` Junio C Hamano [this message]
2016-09-11 5:42 ` [PATCH 06/10] diff.c: emit_line_0 can handle no color Stefan Beller
2016-09-13 0:11 ` Junio C Hamano
2016-09-13 0:25 ` Stefan Beller
2016-09-11 5:42 ` [PATCH 07/10] diff.c: convert fn_out_consume to use emit_line_* Stefan Beller
2016-09-13 0:25 ` Junio C Hamano
2016-09-13 0:41 ` Stefan Beller
2016-09-11 5:42 ` [PATCH 08/10] diff.c: convert emit_rewrite_diff " Stefan Beller
2016-09-11 5:42 ` [PATCH 09/10] diff.c: convert emit_rewrite_lines to use emit_line_0 Stefan Beller
2016-09-11 5:42 ` [PATCH 10/10] submodule.c: convert show_submodule_summary to use emit_line_fmt Stefan Beller
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=xmqqsht4wtns.fsf@gitster.mtv.corp.google.com \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=sbeller@google.com \
--cc=stefanbeller@gmail.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 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.