[PATCH] git-diff-*: --name-only and --name-only-z.

Porcelain layers often want to find only names of changed files,
and even with diff-raw output format they end up having to pick
out only the filename.  Support --name-only (and --name-only-z
for xargs -0 and cpio -0 users that want to treat filenames with
embedded newlines sanely) flag to help them.

Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
Junio C Hamano
2005-07-13 12:45:51 -07:00
committed by Linus Torvalds
parent 8a62a3097c
commit 52f28529f4
6 changed files with 38 additions and 1 deletions

13
diff.c
View File

@ -818,6 +818,12 @@ static void diff_flush_raw(struct diff_filepair *p,
putchar(line_termination);
}
static void diff_flush_name(struct diff_filepair *p,
int line_termination)
{
printf("%s%c", p->two->path, line_termination);
}
int diff_unmodified_pair(struct diff_filepair *p)
{
/* This function is written stricter than necessary to support
@ -978,7 +984,8 @@ void diff_flush(int diff_output_style)
int line_termination = '\n';
int inter_name_termination = '\t';
if (diff_output_style == DIFF_FORMAT_MACHINE)
if (diff_output_style == DIFF_FORMAT_MACHINE ||
diff_output_style == DIFF_FORMAT_NAME_Z)
line_termination = inter_name_termination = 0;
for (i = 0; i < q->nr; i++) {
@ -997,6 +1004,10 @@ void diff_flush(int diff_output_style)
diff_flush_raw(p, line_termination,
inter_name_termination);
break;
case DIFF_FORMAT_NAME:
case DIFF_FORMAT_NAME_Z:
diff_flush_name(p, line_termination);
break;
}
}
for (i = 0; i < q->nr; i++)