diff.c: flush stdout before printing rename warnings

The diff output is buffered in a FILE object and could still be
partially buffered when we print these warnings (directly to fd 2).
The output is messed up like this

 worktree.c                                   |   138 +-
 worktree.h        warning: inexact rename detection was skipped due to too many files.
                           |    12 +-
 wrapper.c                                    |    83 +-

It gets worse if the warning is printed after color codes for the graph
part are already printed. You'll get a warning in green or red.

Flush stdout first, so we can get something like this instead:

 xdiff/xutils.c                               |    42 +-
 xdiff/xutils.h                               |     4 +-
 1033 files changed, 150824 insertions(+), 69395 deletions(-)
warning: inexact rename detection was skipped due to too many files.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Nguyễn Thái Ngọc Duy 2018-01-16 16:23:49 +07:00 коммит произвёл Junio C Hamano
Родитель 27dea4683b
Коммит 4e056c989f
1 изменённых файлов: 1 добавлений и 0 удалений

1
diff.c
Просмотреть файл

@ -4623,6 +4623,7 @@ static const char rename_limit_advice[] =
void diff_warn_rename_limit(const char *varname, int needed, int degraded_cc) void diff_warn_rename_limit(const char *varname, int needed, int degraded_cc)
{ {
fflush(stdout);
if (degraded_cc) if (degraded_cc)
warning(degrade_cc_to_c_warning); warning(degrade_cc_to_c_warning);
else if (needed) else if (needed)