summaryrefslogtreecommitdiff
path: root/diff.c
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2018-01-16 09:23:49 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-01-16 22:34:20 (GMT)
commit4e056c989f8642050973ba1aabc687979f41798c (patch)
tree4bb47cfc1a4536a9d612bf4e92a1d2a1df9029a9 /diff.c
parent27dea4683b608c5c0487dee74cbda13b62803b73 (diff)
downloadgit-4e056c989f8642050973ba1aabc687979f41798c.zip
git-4e056c989f8642050973ba1aabc687979f41798c.tar.gz
git-4e056c989f8642050973ba1aabc687979f41798c.tar.bz2
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>
Diffstat (limited to 'diff.c')
-rw-r--r--diff.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/diff.c b/diff.c
index 8c78fce..bfd1bd2 100644
--- a/diff.c
+++ b/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)
{
+ fflush(stdout);
if (degraded_cc)
warning(degrade_cc_to_c_warning);
else if (needed)