From: Torsten Bögershausen Date: Wed, 02 Aug 2017 15:44:50 GMT Subject: Re: core.autocrlf=true causes `git apply` to fail on patch generated with `git diff-index HEAD --patch` Message-ID: In-Reply-To: On 08/01/2017 10:58 PM, Anthony Sottile wrote: > Here's where I'm hitting the problem described: > https://github.com/pre-commit/pre-commit/issues/570 > > Note that `git -c core.autocrlf=false` apply patch fixes this > situation, but breaks others. [] I wasn't thinking of that - and thanks for the detailed report. I seems as there are 3 things to be done: - Make a workaround in your scripts/tools. It seems as if that is already done. - Fix Git. My very first investigation shows that a patch like this could fix the problem: diff --git a/apply.c b/apply.c index f2d599141d..66b8387360 100644 --- a/apply.c +++ b/apply.c @@ -2278,6 +2278,8 @@ static int read_old_data(struct stat *st, const char *path, struct strbuf *buf) case S_IFREG: if (strbuf_read_file(buf, path, st->st_size) != st->st_size) return error(_("unable to open or read %s"), path); + if (would_convert_to_git(&the_index, path)) + read_cache(); convert_to_git(&the_index, path, buf->buf, buf->len, buf, 0); return 0; default: ---------------- I will probably do some more investigations if this is the core problem, so it will take some days or weeks. - Convince people to normalize their repos and convert all CRLF in the repo into LF. This may take even longer.