diff options
author | Johannes Schindelin <Johannes.Schindelin@gmx.de> | 2006-04-15 13:41:18 +0200 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-04-15 19:30:27 -0700 |
commit | 293532739415d287786a312ec10849723383796e (patch) | |
tree | 4525f9840d72189980a7e5c095b9ad81abe191fb | |
parent | diff-files --stat: do not dump core with unmerged index. (diff) | |
download | tgif-293532739415d287786a312ec10849723383796e.tar.xz |
diff-options: add --patch-with-stat
With this option, git prepends a diffstat in front of the patch.
Since I really, really do not know what a diffstat of a combined diff
("merge diff") should look like, the diffstat is not generated for these.
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r-- | Documentation/diff-options.txt | 3 | ||||
-rw-r--r-- | diff.c | 17 | ||||
-rw-r--r-- | diff.h | 3 |
3 files changed, 22 insertions, 1 deletions
diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index 447e522a7b..c183dc9da0 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -10,6 +10,9 @@ --stat:: Generate a diffstat instead of a patch. +--patch-with-stat:: + Generate patch and prepend its diffstat. + -z:: \0 line termination on output @@ -1060,6 +1060,10 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac) } else if (!strcmp(arg, "--stat")) options->output_format = DIFF_FORMAT_DIFFSTAT; + else if (!strcmp(arg, "--patch-with-stat")) { + options->output_format = DIFF_FORMAT_PATCH; + options->with_stat = 1; + } else if (!strcmp(arg, "-z")) options->line_termination = 0; else if (!strncmp(arg, "-l", 2)) @@ -1529,7 +1533,7 @@ void diff_flush(struct diff_options *options) int diff_output_format = options->output_format; struct diffstat_t *diffstat = NULL; - if (diff_output_format == DIFF_FORMAT_DIFFSTAT) { + if (diff_output_format == DIFF_FORMAT_DIFFSTAT || options->with_stat) { diffstat = xcalloc(sizeof (struct diffstat_t), 1); diffstat->xm.consume = diffstat_consume; } @@ -1541,6 +1545,17 @@ void diff_flush(struct diff_options *options) } putchar(options->line_termination); } + if (options->with_stat) { + for (i = 0; i < q->nr; i++) { + struct diff_filepair *p = q->queue[i]; + flush_one_pair(p, DIFF_FORMAT_DIFFSTAT, options, + diffstat); + } + show_stats(diffstat); + free(diffstat); + diffstat = NULL; + putchar(options->line_termination); + } for (i = 0; i < q->nr; i++) { struct diff_filepair *p = q->queue[i]; flush_one_pair(p, diff_output_format, options, diffstat); @@ -25,6 +25,7 @@ struct diff_options { const char *pickaxe; unsigned recursive:1, with_raw:1, + with_stat:1, tree_in_recursive:1, full_index:1; int break_opt; @@ -120,6 +121,8 @@ extern void diffcore_std_no_resolve(struct diff_options *); " --patch-with-raw\n" \ " output both a patch and the diff-raw format.\n" \ " --stat show diffstat instead of patch.\n" \ +" --patch-with-stat\n" \ +" output a patch and prepend its diffstat.\n" \ " --name-only show only names of changed files.\n" \ " --name-status show names and status of changed files.\n" \ " --full-index show full object name on index lines.\n" \ |