All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael J Gruber <git@drmicha.warpmail.net>
To: unlisted-recipients:; (no To-header on input)
Cc: git@vger.kernel.org
Subject: Re: [PATCH 1/2] diff: introduce --stat-lines to limit the stat lines
Date: Fri, 29 Apr 2011 17:12:44 +0200	[thread overview]
Message-ID: <4DBAD56C.8020804@drmicha.warpmail.net> (raw)
In-Reply-To: <5f16db0f3730be70ff522e63fbd491dc910c34d0.1304089050.git.git@drmicha.warpmail.net>

Michael J Gruber venit, vidit, dixit 29.04.2011 16:57:
> Often one is interested in the full --stat output only for commits which
> change a few files, but not others, because larger restructuring gives a
> --stat which fills a few screens.
> 
> Introduce a new option --stat-lines=<lines> which limits the --stat output
> to the first and last <lines> lines, separated by a "..." line. It can
> also be given as the third parameter in
> --stat=<width>,<name-width>,<lines>.
> 
> Also, the unstuck form is supported analogous to the other two stat
> parameters.
> 
> Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
> ---
> I would even consider a default of 10 (i.e. show a 20 line stat in full,
> abbreviate larger ones) to be sensible but have refrained from such a
> behaviour change.
> 
> We have hardcoded defaults for width (80) and name-width (50), so having
> one for lines should be okay also. Can I has tis wiz default? ;)
> ---
>  Documentation/diff-options.txt |    5 ++++-
>  diff.c                         |   25 +++++++++++++++++++++++--
>  diff.h                         |    1 +
>  3 files changed, 28 insertions(+), 3 deletions(-)
> 
> diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
> index 34f0145..e0429b3 100644
> --- a/Documentation/diff-options.txt
> +++ b/Documentation/diff-options.txt
> @@ -48,11 +48,14 @@ endif::git-format-patch[]
>  --patience::
>  	Generate a diff using the "patience diff" algorithm.
>  
> ---stat[=<width>[,<name-width>]]::
> +--stat[=<width>[,<name-width>[,<lines>]]]::
>  	Generate a diffstat.  You can override the default
>  	output width for 80-column terminal by `--stat=<width>`.
>  	The width of the filename part can be controlled by
>  	giving another width to it separated by a comma.
> +	By giving a third parameter `<lines>`, you can limit the
> +	output to the first and last `<lines>` lines, separated by
> +	`...`.
>  
>  --numstat::
>  	Similar to `\--stat`, but shows number of added and
> diff --git a/diff.c b/diff.c
> index feced34..9ccba1e 100644
> --- a/diff.c
> +++ b/diff.c
> @@ -1244,7 +1244,7 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
>  	int i, len, add, del, adds = 0, dels = 0;
>  	uintmax_t max_change = 0, max_len = 0;
>  	int total_files = data->nr;
> -	int width, name_width;
> +	int width, name_width, lines;
>  	const char *reset, *add_c, *del_c;
>  	const char *line_prefix = "";
>  	struct strbuf *msg = NULL;
> @@ -1259,6 +1259,7 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
>  
>  	width = options->stat_width ? options->stat_width : 80;
>  	name_width = options->stat_name_width ? options->stat_name_width : 50;
> +	lines = options->stat_lines;
>  
>  	/* Sanity: give at least 5 columns to the graph,
>  	 * but leave at least 10 columns for the name.
> @@ -1303,6 +1304,12 @@ static void show_stats(struct diffstat_t *data, struct diff_options *options)
>  		width = max_change;
>  
>  	for (i = 0; i < data->nr; i++) {
> +		if (lines && i >= lines && i < data->nr-lines) {
> +			fprintf(options->file, "%s ...\n", line_prefix);
> +			i = data->nr-lines-1;
> +			lines = 0; /* no need to recheck */
> +			continue;
> +		}

One could/should do the same limitting for the earlier loop which
computes the maximal line width (since the largest file names may be
skipped now). I'll leave this for a v2 which I'm sure will be necessary :)

Michael

  parent reply	other threads:[~2011-04-29 15:12 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-29 14:57 [PATCH 1/2] diff: introduce --stat-lines to limit the stat lines Michael J Gruber
2011-04-29 14:57 ` [PATCH 2/2] diff-options.txt: describe --stat-{width,name-width,lines} Michael J Gruber
2011-04-29 15:12 ` Michael J Gruber [this message]
2011-04-29 16:15 ` [PATCH 1/2] diff: introduce --stat-lines to limit the stat lines Junio C Hamano
2011-05-01  8:27   ` Michael J Gruber
2011-05-01 18:33     ` Junio C Hamano
2011-05-03 10:46       ` [PATCHv2 " Michael J Gruber
2011-05-03 10:46         ` [PATCHv2 2/2] diff-options.txt: describe --stat-{width,name-width,count} Michael J Gruber
2011-05-03 18:47         ` [PATCHv2 1/2] diff: introduce --stat-lines to limit the stat lines Junio C Hamano
2011-05-04  7:16           ` Michael J Gruber
2011-05-27 12:36             ` [PATCHv3 0/3] diff.c: --stat-count=<n> Michael J Gruber
2011-05-27 12:36               ` [PATCHv3 1/3] diff.c: omit hidden entries from namelen calculation with --stat Michael J Gruber
2011-05-27 17:43                 ` Junio C Hamano
2011-05-27 20:19                   ` Michael J Gruber
2011-05-27 22:45                     ` Junio C Hamano
2011-05-27 12:36               ` [PATCHv3 2/3] diff: introduce --stat-lines to limit the stat lines Michael J Gruber
2011-05-28  4:46                 ` Junio C Hamano
2011-05-30  6:40                   ` Michael J Gruber
2011-05-30  7:36                     ` Junio C Hamano
2011-05-27 12:36               ` [PATCHv3 3/3] diff-options.txt: describe --stat-{width,name-width,count} Michael J Gruber
2011-05-04  4:37         ` [PATCHv2 1/2] diff: introduce --stat-lines to limit the stat lines Junio C Hamano

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=4DBAD56C.8020804@drmicha.warpmail.net \
    --to=git@drmicha.warpmail.net \
    --cc=git@vger.kernel.org \
    /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.