Skip to content

Commit

Permalink
Merge branch 'tb/blame-resurrect-convert-to-git' into maint
Browse files Browse the repository at this point in the history
Some time ago, "git blame" (incorrectly) lost the convert_to_git()
call when synthesizing a fake "tip" commit that represents the
state in the working tree, which broke folks who record the history
with LF line ending to make their project portabile across
platforms while terminating lines in their working tree files with
CRLF for their platform.

* tb/blame-resurrect-convert-to-git:
  blame: CRLF in the working tree and LF in the repo
  • Loading branch information
Junio C Hamano committed Jun 5, 2015
2 parents bdf204f + 4bf256d commit 1d93ec9
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
1 change: 1 addition & 0 deletions builtin/blame.c
Original file line number Diff line number Diff line change
Expand Up @@ -2348,6 +2348,7 @@ 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);
Expand Down
18 changes: 15 additions & 3 deletions t/t8003-blame-corner-cases.sh
Original file line number Diff line number Diff line change
Expand Up @@ -191,12 +191,24 @@ test_expect_success 'indent of line numbers, ten lines' '
test $(grep -c " " actual) = 9
'

test_expect_success 'blaming files with CRLF newlines' '
test_expect_success 'setup file with CRLF newlines' '
git config core.autocrlf false &&
printf "testcase\r\n" >crlffile &&
printf "testcase\n" >crlffile &&
git add crlffile &&
git commit -m testcase &&
git -c core.autocrlf=input blame crlffile >actual &&
printf "testcase\r\n" >crlffile
'

test_expect_success 'blame file with CRLF core.autocrlf true' '
git config core.autocrlf true &&
git blame crlffile >actual &&
grep "A U Thor" actual
'

test_expect_success 'blame file with CRLF attributes text' '
git config core.autocrlf false &&
echo "crlffile text" >.gitattributes &&
git blame crlffile >actual &&
grep "A U Thor" actual
'

Expand Down

0 comments on commit 1d93ec9

Please sign in to comment.