提交 5c5b2ea9 编写于 作者: L Linus Torvalds 提交者: Junio C Hamano

diff --stat=width[,name-width]: allow custom diffstat output width.

Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
Signed-off-by: NJunio C Hamano <junkio@cox.net>
上级 785f7432
......@@ -10,8 +10,11 @@
--patch-with-raw::
Synonym for "-p --raw".
--stat::
Generate a diffstat.
--stat[=width[,name-width]]::
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.
--summary::
Output a condensed summary of extended header information
......
......@@ -1735,15 +1735,32 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
else if (!strcmp(arg, "--patch-with-raw")) {
options->output_format |= DIFF_FORMAT_PATCH | DIFF_FORMAT_RAW;
}
else if (!strcmp(arg, "--stat"))
options->output_format |= DIFF_FORMAT_DIFFSTAT;
else if (!strncmp(arg, "--stat-width=", 13)) {
options->stat_width = strtoul(arg + 13, NULL, 10);
options->output_format |= DIFF_FORMAT_DIFFSTAT;
}
else if (!strncmp(arg, "--stat-name-width=", 18)) {
options->stat_name_width = strtoul(arg + 18, NULL, 10);
else if (!strncmp(arg, "--stat", 6)) {
char *end;
int width = options->stat_width;
int name_width = options->stat_name_width;
arg += 6;
end = (char *)arg;
switch (*arg) {
case '-':
if (!strncmp(arg, "-width=", 7))
width = strtoul(arg + 7, &end, 10);
else if (!strncmp(arg, "-name-width=", 12))
name_width = strtoul(arg + 12, &end, 10);
break;
case '=':
width = strtoul(arg+1, &end, 10);
if (*end == ',')
name_width = strtoul(end+1, &end, 10);
}
/* Important! This checks all the error cases! */
if (*end)
return 0;
options->output_format |= DIFF_FORMAT_DIFFSTAT;
options->stat_name_width = name_width;
options->stat_width = width;
}
else if (!strcmp(arg, "--check"))
options->output_format |= DIFF_FORMAT_CHECKDIFF;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册