зеркало из https://github.com/microsoft/git.git
[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:
Родитель
8a62a3097c
Коммит
52f28529f4
|
@ -223,6 +223,14 @@ int main(int argc, const char **argv)
|
|||
diff_output_format = DIFF_FORMAT_MACHINE;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--name-only")) {
|
||||
diff_output_format = DIFF_FORMAT_NAME;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--name-only-z")) {
|
||||
diff_output_format = DIFF_FORMAT_NAME_Z;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "-R")) {
|
||||
diff_setup_opt |= DIFF_SETUP_REVERSE;
|
||||
continue;
|
||||
|
|
|
@ -55,6 +55,10 @@ int main(int argc, const char **argv)
|
|||
; /* no-op */
|
||||
else if (!strcmp(argv[1], "-z"))
|
||||
diff_output_format = DIFF_FORMAT_MACHINE;
|
||||
else if (!strcmp(argv[1], "--name-only"))
|
||||
diff_output_format = DIFF_FORMAT_NAME;
|
||||
else if (!strcmp(argv[1], "--name-only-z"))
|
||||
diff_output_format = DIFF_FORMAT_NAME_Z;
|
||||
else if (!strcmp(argv[1], "-R"))
|
||||
diff_setup_opt |= DIFF_SETUP_REVERSE;
|
||||
else if (!strncmp(argv[1], "-S", 2))
|
||||
|
|
|
@ -87,6 +87,10 @@ int main(int ac, const char **av)
|
|||
find_copies_harder = 1;
|
||||
else if (!strcmp(arg, "-z"))
|
||||
diff_output_format = DIFF_FORMAT_MACHINE;
|
||||
else if (!strcmp(arg, "--name-only"))
|
||||
diff_output_format = DIFF_FORMAT_NAME;
|
||||
else if (!strcmp(arg, "--name-only-z"))
|
||||
diff_output_format = DIFF_FORMAT_NAME_Z;
|
||||
else if (!strcmp(arg, "-R"))
|
||||
diff_setup_opt |= DIFF_SETUP_REVERSE;
|
||||
else if (!strncmp(arg, "-S", 2))
|
||||
|
|
|
@ -480,6 +480,14 @@ int main(int argc, const char **argv)
|
|||
find_copies_harder = 1;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--name-only")) {
|
||||
diff_output_format = DIFF_FORMAT_NAME;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--name-only-z")) {
|
||||
diff_output_format = DIFF_FORMAT_NAME_Z;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "-z")) {
|
||||
diff_output_format = DIFF_FORMAT_MACHINE;
|
||||
continue;
|
||||
|
|
13
diff.c
13
diff.c
|
@ -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++)
|
||||
|
|
2
diff.h
2
diff.h
|
@ -59,6 +59,8 @@ extern int diff_queue_is_empty(void);
|
|||
#define DIFF_FORMAT_MACHINE 1
|
||||
#define DIFF_FORMAT_PATCH 2
|
||||
#define DIFF_FORMAT_NO_OUTPUT 3
|
||||
#define DIFF_FORMAT_NAME 4
|
||||
#define DIFF_FORMAT_NAME_Z 5
|
||||
|
||||
extern void diff_flush(int output_style);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче