Re: autoCRLF, git status, git-gui, what is the desired behavior?
Mark Levedahl <mlevedahl@verizon.net> writes:
Show 21 quoted lines
> I am trying autoCRLF in git compiled from next (75415c455dd307), find
> some behavior that is probably different than desired dealing with a
> file where the only changes are to line endings:
>
> create a text file (foo) with \n endings, check it in.
> $ u2d foo
> $ git diff foo
> diff --git a/foo b/foo
> $ git status
> # On branch master
> # Changed but not updated:
> # (use "git add <file>..." to update what will be committed)
> #
> # modified: foo
> #
> $ git ci -m 'x' foo
> # On branch master
> nothing to commit (working directory clean)
>
> So, git commit will not check in the file, but git status shows an
> unclean file and git diff shows no actual differences.
Unless you are doing something other than what you demonstrated above, I think what 'diff' and 'commit' steps show is expected, even without autoCRLF. 'git status' might be buggy.
create a file (foo), check it in.
$ touch foo
$ git diff foo
diff --git a/foo b/foo
$ git commit -m 'x' foo
# On branch master
nothing to commit (working directory clean)So in order to validate my conjecture that 'git-status' is buggy, can you try this:
(1) Do your sequence from "create a text file (foo) with
\n endings" to "git ci -m 'x' foo", as you depicted
above. (2) Without doing anything else, run "git diff" again,
With my sequence above, "git diff" should say nothing because "update-index --refresh" run inside "git-status" (and "git-commit") would notice 'foo' has not changed.
Ah, I know what is going on. "update-index --refresh" notices that lstat(2) says the size is different between what is recorded in the index, and does not actually compare and refresh the entry.
But that is a very important optimization, and I do not think we would want to cripple that for autoCRLF.
I think this should work for you.
create a text file (foo) with \n endings, check it in.
$ u2d foo
$ git update-index foo
$ git diff foo
$ git status
$ git commitI think the same --refresh check kicks in for "git add" (I did not try), so if you replace the above "git update-index foo" with "git add foo" it may not work. You would want to try that, too.