Re: git diff --quiet exits with 1 on clean tree with CRLF conversions
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 17, 2017, 22:05 UTC
- Message-ID
- <xmqqr32wqxr6.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20170217212633.GA24937@mcrowe.com>
Mike Crowe <mac@mcrowe.com> writes:
Show 5 quoted lines
> If "git diff --quiet" finds it necessary to compare actual file contents, > and a file requires CRLF conversion, then it incorrectly exits with an exit > code of 1 even if there have been no changes. > > The patch below adds a test file that shows the problem.
If "git diff" does not show any output and "git diff --exit-code" or "git diff --quiet" says there are differences, then it is a bug.
I would however have expected that any culprit would involve a code that says "under QUICK option, we do not have to bother doing this". The part you quoted:
Show 9 quoted lines
> if (!DIFF_FILE_VALID(p->one) || /* (1) */ > !DIFF_FILE_VALID(p->two) || > (p->one->oid_valid && p->two->oid_valid) || > (p->one->mode != p->two->mode) || > diff_populate_filespec(p->one, CHECK_SIZE_ONLY) || > diff_populate_filespec(p->two, CHECK_SIZE_ONLY) || > (p->one->size != p->two->size) || > !diff_filespec_is_identical(p->one, p->two)) /* (2) */ > p->skip_stat_unmatch_result = 1;
is used by "git diff" with and without "--quiet", afacr, so I suspect that the bug lies somewhere else.