Should we require windows users to use tools that honor Unix line endings? (Re: [Zope-dev] Re: [Zope3-dev] ATTENTION! cvs to subversion transitiontomorrow)

Jim Fulton jim at zope.com
Wed Apr 28 10:13:07 EDT 2004


Tim Peters wrote:
> [Jim Fulton]
> ...
> 
>>You will be able to do read-only anonymous checkouts like so:
>>
>>   svn co svn://svn.zope.org/repos/main/<project>/trunk
>>
>>For example:
>>
>>   svn co svn://svn.zope.org/repos/main/ZConfig/trunk
> 
> 
> FYI, I tried that on Windows (XP), and it worked fine.
> 
> One glitch, which may be all over the place:  some of the "text files" got
> checked out with Windows line ends, but most did not.  For example, 14 of
> the 19 *.txt files in ZConfig ended up with Windows line ends, but none of
> the 37 *.py files did.
> 
> Ack, no, none of the checked-out .txt files did either.  The .txt files that
> had Windows line ends were all created by svn for its own purposes
> (README.txt files in .svn directories).
> 
> I'm not sure what to do about this.  Best I can tell from the docs so far,
> svn wants a
> 
>     svn:eol-style
> 
> property added to every line-oriented file, with value
> 
>     native
> 
> in order to get platform-sane line-end conversions.  The doc's explanation
> of the effect of that matches my understanding of what CVS does for all
> non-binary files, which is usually exactly right.
> 
> I noticed that Fredrik Lundh complained about something similar here:
> 
>     http://effbot.org/zone/subversion.htm
>     ...
>     Properties are nice, but having to use three different commands
>     to check in a text file from Windows is pretty annoying.
> 
> Looks like svn *expected* us to do this by setting enable-auto-props during
> the intial imports, with a bunch of [auto-props] settings in a config file;
> like
> 
> """
> [auto-props]
> *.c = svn:eol-style=native
> *.cpp = svn:eol-style=native
> *.h = svn:eol-style=native
> *.py = svn:eol-style=native
> *.dsp = svn:eol-style=CRLF
> *.dsw = svn:eol-style=CRLF
> *.sh = svn:eol-style=native;svn:executable
> *.txt = svn:eol-style=native
> *.png = svn:mime-type=image/png
> *.jpg = svn:mime-type=image/jpeg
> """

I found this to be so unbelievable, that I had to resoearch it myself.
After looking this up in the book and expressing my amazement on the #svn
channel (and recieving confirmation from svn developers there), I have to
admit that you are right. I know better than to doubt you, but this is just so
unbelievable, I couldn't help it.


> I think we'll have to develop a standard set of config file settings like
> that for committers to add to their personal svn configs --

I don't think that this is practical. I think it will be very hard to communicate
this to everyone.  Plus, every time someone comes up with a new dang file suffix,
everyone will have to update their config files.

I think the "real" answer, the answer that the svn (and arch) developers believe
in the heart of hearts is that windows users should be using tools that understand,
well, understand and always produce Unix line endings.

Is it practical to require windows users to use tools that understand and produce
Unix line endings?

 > or can that be
> done on the server side?

I suppose it could.  I think that a post-commit script could inspect new files and,
for any new file that has no mine-type property, or has one with a text type,
set the svn:eol-style proprty to native. It would have to do this in a separate
transaction.

Does anyone want to volunteer to write this script?

We'll also need to fix cvs2svn to do something similar.

Jim

-- 
Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org



More information about the Zope-Dev mailing list