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>
This commit is contained in:
brian m. carlson 2014-04-26 23:10:40 +00:00 committed by Junio C Hamano
parent 5f95c9f850
commit 4d4813a52f
2 changed files with 9 additions and 1 deletions

View 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);

View file

@ -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