Diff: --name-status output format.

The new output format shows only the status letter and paths.

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano
2005-09-21 00:20:06 -07:00
parent 8082d8d305
commit 946f5f7c24
3 changed files with 17 additions and 11 deletions

22
diff.c
View File

@ -709,6 +709,8 @@ int diff_opt_parse(struct diff_options *options, const char **av, int ac)
options->rename_limit = strtoul(arg+2, NULL, 10);
else if (!strcmp(arg, "--name-only"))
options->output_format = DIFF_FORMAT_NAME;
else if (!strcmp(arg, "--name-status"))
options->output_format = DIFF_FORMAT_NAME_STATUS;
else if (!strcmp(arg, "-R"))
options->reverse_diff = 1;
else if (!strncmp(arg, "-S", 2))
@ -835,7 +837,8 @@ void diff_free_filepair(struct diff_filepair *p)
static void diff_flush_raw(struct diff_filepair *p,
int line_termination,
int inter_name_termination)
int inter_name_termination,
int output_format)
{
int two_paths;
char status[10];
@ -871,13 +874,12 @@ static void diff_flush_raw(struct diff_filepair *p,
two_paths = 0;
break;
}
printf(":%06o %06o %s ",
p->one->mode, p->two->mode, sha1_to_hex(p->one->sha1));
printf("%s %s%c%s",
sha1_to_hex(p->two->sha1),
status,
inter_name_termination,
p->one->path);
if (output_format != DIFF_FORMAT_NAME_STATUS) {
printf(":%06o %06o %s ",
p->one->mode, p->two->mode, sha1_to_hex(p->one->sha1));
printf("%s ", sha1_to_hex(p->two->sha1));
}
printf("%s%c%s",status, inter_name_termination, p->one->path);
if (two_paths)
printf("%c%s", inter_name_termination, p->two->path);
putchar(line_termination);
@ -1067,8 +1069,10 @@ void diff_flush(struct diff_options *options)
diff_flush_patch(p);
break;
case DIFF_FORMAT_RAW:
case DIFF_FORMAT_NAME_STATUS:
diff_flush_raw(p, line_termination,
inter_name_termination);
inter_name_termination,
diff_output_format);
break;
case DIFF_FORMAT_NAME:
diff_flush_name(p, line_termination);