Hi,
for files that contain windows line endings in a repository with
core.autocrlf=input, git blame will show lines as "Not Committed Yet",
even though they were not modified.
Example:
--
git init
git config core.autocrlf false
echo "foo" > a
unix2dos a
git add a
git commit -m "initial commit"
git config core.autocrlf input
git status
git blame a
--
Output:
--
Reinitialized existing Git repository in /.../testblame2/.git/
unix2dos: converting file a to DOS format ...
On branch master
nothing to commit, working directory clean
On branch master
nothing to commit, working directory clean
00000000 (Not Committed Yet 2014-02-13 10:02:43 +0100 1) foo
--
Is there an easy way to work around this; is this desired behaviour or
mor a bug?
Thanks - Eph
From: brian m. carlson <hidden> Date: 2016-06-15 22:59:54
On Thu, Feb 13, 2014 at 10:08:55AM +0100, Ephrim Khong wrote:
Hi,
for files that contain windows line endings in a repository with
core.autocrlf=input, git blame will show lines as "Not Committed
Yet", even though they were not modified.
Example:
--
git init
git config core.autocrlf false
echo "foo" > a
unix2dos a
git add a
git commit -m "initial commit"
git config core.autocrlf input
git status
git blame a
--
Output:
--
Reinitialized existing Git repository in /.../testblame2/.git/
unix2dos: converting file a to DOS format ...
On branch master
nothing to commit, working directory clean
On branch master
nothing to commit, working directory clean
00000000 (Not Committed Yet 2014-02-13 10:02:43 +0100 1) foo
--
Is there an easy way to work around this; is this desired behaviour
or mor a bug?
I'm pretty sure this is a bug. git blame should show the proper
information in this case.
--
brian m. carlson / brian with sandals: Houston, Texas, US
+1 832 623 2791 | http://www.crustytoothpaste.net/~bmc | My opinion only
OpenPGP: RSA v4 4096b: 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187
From: brian m. carlson <hidden> Date: 2016-06-15 22:59:57
If a file contains CRLF line endings in a repository with
core.autocrlf=input, then blame always marks the lines as "Not Committed
Yet", even if they are unmodified. Add a failing test for this case, so we
are at least aware of this issue.
Reported-by: Ephrim Khong <redacted>
Signed-off-by: brian m. carlson <redacted>
---
Obviously, this doesn't actually fix the issue, but at least we're aware of it
so we don't lose track of it and can fix it. A future patch can mark the test
passing.
t/t8003-blame-corner-cases.sh | 10 ++++++++++
1 file changed, 10 insertions(+)
@@ -191,4 +191,14 @@ test_expect_success 'indent of line numbers, ten lines' 'test$(grep-c" "actual)=9'+test_expect_failure'blaming files with CRLF newlines''+gitconfigcore.autocrlffalse&&+printf"testcase\r\n">crlffile&&+gitaddcrlffile&&+gitcommit-mtestcase&&+gitconfigcore.autocrlfinput&&+gitblamecrlffile>actual&&+grep"A U Thor"actual+'+ test_done
If a file contains CRLF line endings in a repository with
core.autocrlf=input, then blame always marks the lines as "Not Committed
Yet", even if they are unmodified. Add a failing test for this case, so we
are at least aware of this issue.
Reported-by: Ephrim Khong <redacted>
Signed-off-by: brian m. carlson <redacted>
---
Obviously, this doesn't actually fix the issue, but at least we're aware of it
so we don't lose track of it and can fix it. A future patch can mark the test
passing.
t/t8003-blame-corner-cases.sh | 10 ++++++++++
1 file changed, 10 insertions(+)
@@ -191,4 +191,14 @@ test_expect_success 'indent of line numbers, ten lines' 'test$(grep-c" "actual)=9'+test_expect_failure'blaming files with CRLF newlines''+gitconfigcore.autocrlffalse&&+printf"testcase\r\n">crlffile&&+gitaddcrlffile&&+gitcommit-mtestcase&&+gitconfigcore.autocrlfinput&&+gitblamecrlffile>actual&&+grep"A U Thor"actual+'+test_done
We can test that git blame gives the same result with
core.autocrlf=input and core.autocrlf=false, and make the test case
look like this:
test_expect_failure 'blaming files with CRLF newlines' '
git config core.autocrlf false &&
printf "testcase\r\n" >crlffile &&
git add crlffile &&
git commit -m testcase &&
git blame crlffile >expected &&
git -c core.autocrlf=input blame crlffile >actual &&
test_cmp expected actual
'