[Numpy-discussion] whitespace in git repo

Darren Dale dsdale24 at gmail.com
Wed Oct 27 13:39:55 EDT 2010


On Wed, Oct 27, 2010 at 11:31 AM, Friedrich Romstedt
<friedrichromstedt at gmail.com> wrote:
> Hi Darren,
>
> 2010/10/27 Darren Dale <dsdale24 at gmail.com>:
>>> So the svg changes must come from the 'fix' value for the whitespace action.
>>>
>>> I don't think it is a good idea to let whitespace be fixed by git and
>>> not by your editor :-)  Or do you disagree?
>>
>> "What are considered whitespace errors is controlled by
>> core.whitespace configuration. By default, trailing whitespaces
>> (including lines that solely consist of whitespaces) and a space
>> character that is immediately followed by a tab character inside the
>> initial indent of the line are considered whitespace errors."
>>
>> No mention of EOL conversions there. But yes, I guess we disagree. I
>> prefer to have git automatically strip any trailing whitespace that I
>> might have accidentally introduced.
>
> I agree.  But I just guess that the changes of the svgs in your pull
> request might be not due to eols but due to whitespace fixes.

No, it was not. I explicitly checked the svg files before and after,
using open("foo.svg").readlines[0], and saw that the files were CRLF
before the commit on my branch, and LF after.

> I think
> so because in my numpy (current master branch) I cannot see any CRLF
> there in the repo.  Checked with ``* text=auto``, which also affects
> non-normalised files in the repo.
>
> But it might be that the conversion is done silently, although I don't
> know how to do it like that.  So no "changed" showing up implies "no
> non-LF eol".
>
>>> This whitespace & newline thing is really painful, I suggest you set
>>> in your .gitconfig:
>>>
>>> [core]
>>>    autocrlf = true
>>
>> I don't think so: "Use this setting if you want to have CRLF line
>> endings in your working directory even though the repository does not
>> have normalized line endings." I don't want CRLF in my working
>> directory. Did you read
>> http://help.github.com/dealing-with-lineendings/ ?
>
> Aha, this is a misunderstanding.  Somehow I thought you're working on
> Windows.  Is there then a specific reason not to use CRLF?  I mean,
> you can check it in with LF anyway.
>
> The page you mentioned is very brief and like a recipe, not my taste.
> I want to know what's going on in detail.
>
>>> and in our numpy .gitattributes:
>>>
>>> * text=auto
>>
>> That is already included in the pull request.
>
> Yes, I know.  I meant to leave the line with the eol=crlf alone.  All
> based on the assumtion that you're working with crlf anyway, so might
> be wrong.
>
>>> while the text=auto is more strong and a superset of autocrlf=true.
>>>
>>> I came across this when trying if text=auto marks any files as
>>> changed, and it didn't so everything IS already LF in the repo.
>>>
>>> Can you check this please?
>>
>> Check what?
>
> My conclusions above.  We both know that in this subject all
> conclusions are pretty error-prone ...
>
>>> I was near to leaving a comment like
>>> "asap" on github, but since this is so horribly complicated and
>>> error-prone ...
>>
>> I'm starting to consider canceling the pull request.
>
> At least we should check if it's really what we intend.
>
> I understand now better why at all you wanted to force the .nsi.in
> file to be crlf.  From your previous posts, i.e. that it would be the
> default for Win users anyway, I see now that I should have asked.
>
> To my understanding the strategy should be two things:
> 1)  LF force in the repo.  This is independent from the .nsi.in thing,
> but missing currently in the official branches.  We can do that at the
> same time.
> 2)  Forcing the .nsi.in file to be crlf in the check-out (and only
> there) at all times.  There is one higher level in $GITDIR, but I
> think we can ignore that.
>
> To (1): The default Win user would check-in *newly created* files
> currently in CRLF, at least this is what I did with a not-so-recent
> git some time ago (other repos) .... When I switched to Mac, all my
> files were marked "changed".  afaik git does not do normalisation if
> you do not tell it to do so. "While git normally leaves file contents
> alone, it can be configured to normalize line endings to LF in the
> repository and, optionally, to convert them to CRLF when files are
> checked out." (http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html)
>  I still do not understand why my files showed up changed.  They're
> still crlf, I just copied them, and vim tells [dos].
>
> Please also confirm or show that I'm wrong with my observation of LFCR
> in your .nsi.in file instead of CRLF (it's swapped).

I thought this was already settled. OK, on my whitespace-cleanup
branch, I modify .gitattributes to comment out the line about the
nsi.in file. I check out the nsi.in file from HEAD, and:

In [1]: open('tools/win32build/nsis_scripts/numpy-superinstaller.nsi.in').readlines()[0]
Out[1]: ';--------------------------------\n'

Then I do git checkout HEAD^
tools/win32build/nsis_scripts/numpy-superinstaller.nsi.in :

In [1]: open('tools/win32build/nsis_scripts/numpy-superinstaller.nsi.in').readlines()[0]
Out[1]: ';--------------------------------\r\n'

CRLF, not LFCR.

> I checked as
> written before.
> http://article.gmane.org/gmane.comp.python.numeric.general/41063.
> This would also explain how it can make it into the repo (i.e.,
> succeed in :-) and still be not detected by git when ``* text=auto``
> is active.  Git thinks it's \n since theres no \r before, and does not
> consider the \r which is trailing.
>
> Best wishes,
> Friedrich
>
> P.S.: Might be worth putting this OL, I believe noone besides us is
> interested.  If you agree.

I'm losing interest myself. I don't think the issue is so complicated,
there just seems to be a lot of confusing misinformation being posted
here.



More information about the NumPy-Discussion mailing list