Re: What should be the CRLF policy when win + Linux?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, May 6, 2010 at 10:00 PM, hasen j <hasan.aljudy@xxxxxxxxx> wrote:
> On 6 May 2010 11:15, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
>>
>>
>> On Thu, 6 May 2010, hasen j wrote:
>>>
>>> I don't know all linux editors, but I've yet to see one that can't
>>> handle CRLF endings.
>>
>> A _lot_ of UNIX editors will handle CRLF endings, but if you change a
>> file, they often write the result back with _mixed_ endings. Some will
>> also show the CR as '^M' or some other garbage at the end.
>>
>> A number of tools will also end up confused, including very fundamental
>> things like "grep". Try this:
>>
>>        echo -e "Hello\015" > f
>>        grep 'Hello$' f
>>
>> and notice how the grep does _not_ find the Hello at the end of the line,
>> because grep sees another random character there (this might be
>> unportable, I could easily imagine some versions of grep finding it).
>>
>> So I would strongly suggest against CRLF on UNIX. It really doesn't work
>> very well, even if some tools will handle it to some limited degree.
>>
>> In short: having 'core.autocrlf' set will likely make it much more
>> pleasant to work across different platforms.
>>
>>                        Linus
>>
>
> When I'm on windows, I prefer LF (unless the project already uses
> CRLF, or it's outside my control).
>

"When I'm on windows" leads me to believe Windows is not your primary
operating system. If not, please excuse me.

> My problem with autocrlf is that, well, it converts line endings in
> the working directory to CRLF, even though I don't always want it to.
> (most of the time, I don't).
>

There's gitattributes for that.

> The other problem is, git will get confused if you set autocrlf *after
> the fact*; i.e. you already cloned and have the files checked out,
> maybe even made some commits.
>

core.autocrlf being on by default in Git for Windows greatly reduces
the risk for this. I with core.autocrlf was set to "input" by default
on other platforms, though.

> Overall, I ran into many awkward situations with autocrlf (and I can't
> remember them now), but if you google you can find some of the issues
> people are having.
>
> The whole problem would go away if there was no crlf, and that's not
> impossible: any decent text editor can read/write files with Unix line
> endings.
>

That's probably on of the things that makes a text-editor decent in
your book, but this opinion might not be shared with everyone. Perhaps
not being primarily a Windows-user somehow biases your opinion here?

> I wasn't aware that Visual Studio doesn't have an easy way to have it
> write LF endings by default; I'm sure there are addons to make that
> easier. Plus most open source projects are not usually setup with VS
> as the development environment anyway, so it's really not a big
> problem.

The problem with Visual Studio isn't that it doesn't write LFs
normally... the problem is that when you paste text, it retains the
newline style from the source you copied from. But it is not the only
tool with such issues, so playing the "VS is the problem"-card doesn't
stick IMO.

Even if it did, Open source isn't the only model for developing
software. And again... even if it were, working well together with
visual studio support would be very beneficial for quite a bit of
projects. Visual Studio is probably the most used code-editor among
Windows-developers (with a good margin too, I suspect), so ignoring it
is would just be sticking your head in the sand - or worse, asking for
less contributions from Windows-users (which can often be a problem in
the first place).

So no, I strongly doubt LF everywhere is the better way ;)

-- 
Erik "kusma" Faye-Lund
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]