blame: correctly handle files regardless of autocrlf
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>
brian m. carlson committed
Apr 26, 2014 at 23:10 UTC
4d4813a52f3722854a54bab046f4abfec13ef6ae
2 files changed
+9
-1
builtin/blame.c
-1
@@ -2095,7 +2095,6 @@ static struct commit *fake_working_tree_commit(struct diff_options *opt,
2095
if (strbuf_read(&buf, 0, 0) < 0)
2096
die_errno("failed to read from stdin");
2097
}
2098
- convert_to_git(path, buf.buf, buf.len, &buf, 0);
2098
origin->file.ptr = buf.buf;
2099
origin->file.size = buf.len;
2100
pretend_sha1_file(buf.buf, buf.len, OBJ_BLOB, origin->blob_sha1);
t/t8003-blame-corner-cases.sh
+9
@@ -191,4 +191,13 @@ test_expect_success 'indent of line numbers, ten lines' '
191
test $(grep -c " " actual) = 9
192
'
193
194
+test_expect_success 'blaming files with CRLF newlines' '
195
+ git config core.autocrlf false &&
196
+ printf "testcase\r\n" >crlffile &&
197
+ git add crlffile &&
198
+ git commit -m testcase &&
199
+ git -c core.autocrlf=input blame crlffile >actual &&
200
+ grep "A U Thor" actual
201
+'
202
+
203
test_done