blame: correctly handle files regardless of autocrlf
authorbrian m. carlson <sandals@crustytoothpaste.net>
Sat, 26 Apr 2014 23:10:40 +0000 (23:10 +0000)
committerJunio C Hamano <gitster@pobox.com>
Thu, 8 May 2014 21:43:49 +0000 (14:43 -0700)
If a file contained CRLF line endings in a repository with
core.autocrlf=input, then blame always marked lines as "Not
Committed Yet", even if they were unmodified. Don't attempt to
convert the line endings when creating the fake commit so that blame
works correctly regardless of the autocrlf setting.

Reported-by: Ephrim Khong <dr.khong@gmail.com>
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/blame.c
t/t8003-blame-corner-cases.sh
index e44a6bb30a5a5299c6d57150dd2f23454b25891a..7468df4a41651ab9bcd8acc54daf3e6acf7a17ae 100644 (file)
@@ -2095,7 +2095,6 @@ static struct commit *fake_working_tree_commit(struct diff_options *opt,
                if (strbuf_read(&buf, 0, 0) < 0)
                        die_errno("failed to read from stdin");
        }
-       convert_to_git(path, buf.buf, buf.len, &buf, 0);
        origin->file.ptr = buf.buf;
        origin->file.size = buf.len;
        pretend_sha1_file(buf.buf, buf.len, OBJ_BLOB, origin->blob_sha1);
index e7cac1db55113188c7149686399292bded9c07dd..2a3469bcbea39e832ab44280bb1223fc4ee20b61 100755 (executable)
@@ -191,4 +191,13 @@ test_expect_success 'indent of line numbers, ten lines' '
        test $(grep -c "  " actual) = 9
 '
 
+test_expect_success 'blaming files with CRLF newlines' '
+       git config core.autocrlf false &&
+       printf "testcase\r\n" >crlffile &&
+       git add crlffile &&
+       git commit -m testcase &&
+       git -c core.autocrlf=input blame crlffile >actual &&
+       grep "A U Thor" actual
+'
+
 test_done