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.


Reply via email to