threads / discuss / 32429

git diff --ignore-space-at-eol issue

Subject: git diff --ignore-space-at-eol issue

## tl;dr

4 messages between Dec 21, 2012 and Dec 28, 2012.

replies: 3people: 2as markdown or json

John Moon· Dec 21, 2012, 15:04 UTC · lore
Hi all,

The --ignore-space-at-eol option is ignored when used in conjunction with --name-status. It works fine otherwise.

$ git init Initialized empty Git repository in /tmp/test/.git/ $ printf "hello\r\n" > test.txt $git -c core.autocrlf=false add test.txt $git commit -m. [master (root-commit) 5c4ce92] . 1 file changed, 1 insertion(+) create mode 100644 test.txt $ printf "hello" > test.txt $ git diff --ignore-space-at-eol test.txt $ git diff --stat --ignore-space-at-eol test.txt 0 files changed $ git diff --name-status --ignore-space-at-eol test.txt M test.txt

Thanks.
 		 	   		  
Antoine Pelisse· Dec 28, 2012, 16:46 UTC · re: John Moon · lore

Re: git diff --ignore-space-at-eol issue

> The --ignore-space-at-eol option is ignored when used in conjunction
> with --name-status.
> It works fine otherwise.

Indeed the behavior of diff --stat, and etc has been corrected very recently to make it more consistent across all options. I don't know if the new behavior is exactly what you expected:

$ git diff --ignore-space-at-eol test.txt
$ git diff --ignore-space-at-eol --stat test.txt
 test.txt | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
$ git diff --ignore-space-at-eol --name-status test.txt
M       test.txt

The idea is that even though diff doesn't show any differences, stat, shortstat, numstat and name-status reports the file as being changed. This is available since v1.8.1-rc0.

John Moon· Dec 28, 2012, 19:59 UTC · re: Antoine Pelisse · lore

RE: git diff --ignore-space-at-eol issue

Show 10 quoted lines
> $ git diff --ignore-space-at-eol test.txt
> $ git diff --ignore-space-at-eol --stat test.txt
> test.txt | 0
> 1 file changed, 0 insertions(+), 0 deletions(-)
> $ git diff --ignore-space-at-eol --name-status test.txt
> M test.txt
>
> The idea is that even though diff doesn't show any differences, stat,
> shortstat, numstat and name-status reports the file as being changed.
> This is available since v1.8.1-rc0.

Thanks for the info.  Unfortunately it's not what i would expect.   If i told git diff specifically to ignore line endings, why is --name-status  showing me a file as being modified when the only modification is the very thing i told it to ignore.   The same thing for --stat, why is it showing me a file with zero changes?  Just my opinion though.

I'll tell you why this is a problem for me, basically what i am doing is running the "git diff --ignore-space-at-eol --name-status "  on my root directory to give to someone else who is not using git to give them the files that i have modified.  I don't want to give them a file where only the line ending has changed.
Cheers. 		 	   		  
Antoine Pelisse· Dec 28, 2012, 20:33 UTC · re: John Moon · lore

Re: git diff --ignore-space-at-eol issue

Then you should give the output of diff --stat, and he will be able to ignore files with no changes.

The change was originally made for permission changes. diff --stat needs to show files have changed even though, indeed, there is no diff output.

You could also use --numstat and filter out files with no changes (starting by 0 0).

On Fri, Dec 28, 2012 at 8:59 PM, John Moon <johnmoon77@hotmail.com> wrote:
Show 20 quoted lines
>
>
>> $ git diff --ignore-space-at-eol test.txt
>> $ git diff --ignore-space-at-eol --stat test.txt
>> test.txt | 0
>> 1 file changed, 0 insertions(+), 0 deletions(-)
>> $ git diff --ignore-space-at-eol --name-status test.txt
>> M test.txt
>>
>> The idea is that even though diff doesn't show any differences, stat,
>> shortstat, numstat and name-status reports the file as being changed.
>> This is available since v1.8.1-rc0.
>
> Thanks for the info.  Unfortunately it's not what i would expect.
> If i told git diff specifically to ignore line endings, why is --name-status  showing me a file as being modified when the only modification is the very thing i told it to ignore.
> The same thing for --stat, why is it showing me a file with zero changes?  Just my opinion though.
>
> I'll tell you why this is a problem for me, basically what i am doing is running the "git diff --ignore-space-at-eol --name-status "  on my root directory to give to someone else who is not using git to give them the files that i have modified.  I don't want to give them a file where only the line ending has changed.
>
> Cheers.

← back to recent threads